Html.Checkbox
我对使用扩展方法创建的复选框有这个烦人的问题。显然,在回发的情况下不会保存复选框的状态(由于表单验证错误)。深入研究 MVC 代码本身 ( System.Web.Mvc.Html.InputExtensions
),我发现“已检查”属性是通过调用htmlHelper.EvalBoolean(name)
.
此方法查找 ViewData 本身的键(在 name 参数中指定)。问题是复选框的值实际上位于ModelState中。调用
htmlHelper.GetModelStateValue(name, typeof(bool))
将返回预期结果。
这是复选框实现中的缺陷吗?