Asp.net-Mvc-2
為什麼 mvc Html.HiddenFor 不呈現我的欄位?
我正在嘗試做這個簡單的事情
<%= Html.HiddenFor(model => model.Id)%>模型是
[HiddenInput(DisplayValue=true)] public int Id { get; set; }但我總是得到這個渲染
<input type="hidden" value="0" name="UserInfo.Id" id="UserInfo_Id">我檢查過,id 不是 0 ..?!
這裡需要一些解釋…
編輯
問題似乎是下面提到的文章。這是有效的
<input type="hidden" value="<%= Html.AttributeEncode(Model.Id) %>" id="<%= Html.IdFor(model=>model.Id)%>" name="<%= Html.NameFor(model=>model.Id)%>" />感謝馬納夫
我不確定您是否是這種情況,但是
Html.HiddenFor()“如果在發布期間更改了值,則在發布後不輸出正確的值”。這不是這樣設計的錯誤。快速解決 :
不要使用助手,試試這個:
<input type="hidden" value="<%= Html.AttributeEncode(model.Id) %>" id="Id" name="Id" />一直為我工作:)
添加到 Manaf 的正確答案 - 您正確地註意到問題發生在處理文章的控制器操作中。當我將模型顯式傳遞給視圖時,我在處理 get 的控制器操作中遇到了同樣的問題:
[HttpGet] ActionResult SearchForSomething(SearchForm searchForm) { searchForm.MyId = SomeValueFromSession; return View("SearchForSomething", searchForm); }在視圖中,為 MyId 呈現隱藏輸入的這條線始終呈現為“0”:
@Html.HiddenFor(m => m.MyId);根據 Darren Oster 的建議,我更改為以下內容並解決了問題:
[HttpGet] ActionResult SearchForSomething(SearchForm searchForm) { searchForm.MyId = SomeValueFromSession; ModelState.Clear(); return View("SearchForSomething", searchForm); }