Asp.net-Mvc

帶有 html 助手 Hidden 和 HiddenFor 的布爾值

  • June 30, 2016

這是怎麼回事?viewmodel 變數是一個值為 true 的布爾值。

<%= Html.HiddenFor(m => m.TheBool) %>
<%= Html.Hidden("IsTimeExpanded",Model.TheBool) %>
<input type="hidden" value="<%=Model.TheBool%>" name="TheBool" id="TheBool">

結果是:

<input id="TheBool" name="TheBool" value="False" type="hidden">
<input id="TheBool" name="TheBool" value="False" type="hidden">
<input value="True" name="TheBool" id="TheBool" type="hidden">

我究竟做錯了什麼?為什麼助手不能按預期工作?

1)使用不同的(唯一的)ID

2)不要使用這個助手,使用

<input type="hidden" name="the-name" 
 value="<%= Html.AttributeEncode(Model.TheBool) %>" id="TheBool_1216786" />

正如這裡所回答的,問題是 HTML 助手預設使用發布的值(如果可用)然後引用模型。就我個人而言,我認為這並沒有什麼意義,現在想知道在我們的平台上還有多少其他錯誤在等待。

無論如何,上述答案中發布的解決方案將解決問題,只需在從控制器返回之前添加此行:

ModelState.Remove("TheBool")

是的,這有點垃圾,因為您只能使用字元串引用……但它確實有效。

引用自:https://stackoverflow.com/questions/2400400