至于我知道,似乎微软使用jQuery验证属性作为表单输入属性的默认值。ASP.NET MVC 5和HTML 5根据W3C规范形成属性
是否可以配置我的应用程序,所以如果我加入Required
属性和使用@Html.EditorFor(x => Model)
形式将使用required
属性,而不是data-val-required
渲染渲染我的形式?还是我不得不为所有标准类型编写我自己的EditorTemplates
?
至于我知道,似乎微软使用jQuery验证属性作为表单输入属性的默认值。ASP.NET MVC 5和HTML 5根据W3C规范形成属性
是否可以配置我的应用程序,所以如果我加入Required
属性和使用@Html.EditorFor(x => Model)
形式将使用required
属性,而不是data-val-required
渲染渲染我的形式?还是我不得不为所有标准类型编写我自己的EditorTemplates
?
如果你想在你的web.config禁用不显眼的客户端验证以取代ASP.NET MVC使用的标准data-*
验证属性,你应该开始:
<add key="ClientValidationEnabled" value="false" />
这将防止HTML辅助发光,从他们在你的输入字段。
然后,您可以编写标准类型的自定义编辑器模板。例如,对于字符串,这将是~/Views/Shared/editorTemplates/String.cshtml
:
@{
var attributes = new Dictionary<string, object>();
attributes["class"] = "text-box single-line";
if (ViewData.ModelMetadata.IsRequired)
{
attributes["required"] = "required";
}
}
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, attributes)
而这几乎是它。现在,每次你做一个Html.EditorFor(x => x.Foo)
其中Foo
是一个字符串属性,将产生以下标记:
<input class="text-box single-line" id="Foo" name="Foo" required="required" type="text" value="" />
另外值得一提的是,如果你不希望禁用不显眼的客户端验证,并为您的整个的data-*
属性应用程序,但只适用于单个表单,你可以这样做:
@using (Html.BeginForm())
{
this.ViewContext.ClientValidationEnabled = false;
@Html.EditorFor(x => x.Foo)
}
好吧,我明白了。谢谢! – Marcus
@darindimitrov先生,您能否给我建议,可能是HTML5约束表单验证的原因在我的mvc 5网站中不起作用。那么,实际上它有点工作,但没有警告信息显示。我一直在寻找三天的解决方案:( –
不一样,但在SO问题下面,表单将使用Html属性呈现“Required”。相当手动的方法,虽然http://stackoverflow.com/questions/6788231/mvc3-adding-css-class-based-on-model-attributes – Spock
你可以关闭jQuery验证你想要的元素,然后提供html5属性thr。注意数据属性是HTML5的一部分.. –