本文介绍了@ Html.CheckBoxFor生成客户端验证属性,而@ Html.CheckBox不的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
让我们说我有这个模型:
公共类Person
{
公共BOOL IsApproved {搞定;组; }
}
和WHIS这个codeS,我试图使输入
与检查
键入:
@ Html.CheckBoxFor(X => x.IsApproved)
@ Html.CheckBox(IsApproved)
但是,结果是不同的:
// CheckBoxFor结果
<输入数据-VAL =真正的数据-VAL-所需=是必需的IsApproved场。 ID =IsApprovedNAME =IsApproved类型=复选框VALUE =真>
<输入名称=IsApproved类型=隐藏值=假>//复选框结果
<输入ID =IsApprovedNAME =IsApproved类型=复选框VALUE =真>
<输入名称=IsApproved类型=隐藏值=假>
如何以及为什么的,第一个生成客户端验证属性,而其他没有?
更新:的
交换的 @ Html.CheckBoxFor
和 @ Html.CheckBox
标记元素的顺序没订单后'T改变。
解决方案
的复选框()
助手不呈现数据-VAL
属性,因为形式已经呈现 CheckBoxFor()
同一属性。如果交换顺序,数据-VAL
属性将呈现为复选框()
(而不是 CheckBoxFor()
)。
我的理解是在解析表单时,这会导致与jquery.validation.unobtrusive潜在的(重复)的问题。
控件的HTML辅助内部调用 GetUnobtrusiveValidationAttributes()
的HtmlHelper
的方法。 (我的重点)
public IDictionary<string, object> GetUnobtrusiveValidationAttributes(string name, ModelMetadata metadata)
{
这篇关于@ Html.CheckBoxFor生成客户端验证属性,而@ Html.CheckBox不的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!