本文介绍了@ 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不的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 16:54