2010-01-20 46 views
0

這是我昨天發佈的問題的後續。我能夠正確地實現複選框,感謝您的所有建議。現在我試圖解決第二個問題,即在頁面刷新期間或者當用戶單擊瀏覽器上的後退按鈕時保持複選框狀態。再次我有在我看來,下面的示例代碼:複選框HTML助手錯誤

<tr> 
    <td><label for="Name">Name</label></td> 
    <td><%= Html.Encode(entity.CONTACT_NAME)%></td> 
    <td><%= Html.CheckBox("Name", false, new {@value = Html.Encode(entity.CONTACT_NAME)}) %></td> 
    </tr> 

當我檢查中,我得到了在ModelState中「李四,假」名稱中的下列值。據我所知,複選框html helper從ModelState中獲取它的值。但是,當頁面重新呈現,並得到的代碼這一行,我得到以下錯誤:

The parameter conversion from type 'System.String' to type 'System.Boolean' failed 

同樣,我的目標是保持簡單的複選框的狀態,不知道是怎麼回事。

UPDATE:

如果該複選框從ModelState中重新渲染,如果密鑰被存儲爲字符串,我如何將它們轉換爲布爾值時獲得的價值?

回答

0

能夠解決它,感謝您的所有建議。在我的情況下,我必須將ModelState作爲參數傳遞給一個方法,該方法查看ModelState中不僅爲false的所有值,並通過調用SetModelValue將其設置爲true。

實施例:

errorHandler(ModelStateDictionary modelState, ChangeRequest aChangeRequest) 
{ 
       if (aChangeRequest.Job != "false") 
       modelState.SetModelValue("Job", new ValueProviderResult("true", "true", new CultureInfo("en-US"))); 

    //Etc. 
} 

對於這個項目,我創建的被填充在我的控制器使用TryUpdateModel值,然後傳遞到方法這個問題,以及一個類對象。我確信有一個更有效的方法,但這似乎工作,歡迎任何其他建議。

1

您試圖將複選框的值設置爲實體的聯繫人姓名,我想這是一個字符串?

您需要將該值設置爲實體的布爾屬性。

0

確保您用於設置複選框值的屬性或表達式是布爾類型。

+0

據我所知,但如果布爾值過去作爲字符串文字在首字母POST中,即「真,假」,或在我的情況「名稱,假」,我該如何將它們轉換回布爾值? ?我可以將字符串名稱更改爲「true」,但它仍然是一個字符串。 – kingrichard2005