Asp.net mvc Asp.Net Mvc 3客户端验证、属性生成
Asp.net Mvc3在输入元素上添加一些自定义属性,如“需要数据值”以执行验证。我知道这背后的所有理论,它是如何运作的 我想知道的是: 当我在“@using(Html.BeginForm())”中创建表单时,它会生成自定义属性,但当我将表单放在普通“Asp.net mvc Asp.Net Mvc 3客户端验证、属性生成,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc3在输入元素上添加一些自定义属性,如“需要数据值”以执行验证。我知道这背后的所有理论,它是如何运作的 我想知道的是: 当我在“@using(Html.BeginForm())”中创建表单时,它会生成自定义属性,但当我将表单放在普通“”标记之间时,它不会创建这些属性 下面是我制作的一个演示,演示我所说的 Razor代码,BefingForm()中的表单 生成的Html包含如下所示的属性“需要数据值” <input type="text" value="" data-v
”标记之间时,它不会创建这些属性
下面是我制作的一个演示,演示我所说的
Razor代码,BefingForm()中的表单
生成的Html包含如下所示的属性“需要数据值”
<input type="text" value="" data-val-required="The Email Address field is required." data-val-email="my message">
<input type="text" value="" gtbfieldid="44">
纯Html标记内的Razor代码表单
<form action="/Account/Register" method="post">
@Html.EditorFor(model => model.EmailAddress)
@Html.ValidationMessageFor(model => model.EmailAddress)
</form>
@EditorFor(model=>model.EmailAddress)
@Html.ValidationMessageFor(model=>model.EmailAddress)
生成的Html不包含如下所示的“需要数据值”属性
<input type="text" value="" data-val-required="The Email Address field is required." data-val-email="my message">
<input type="text" value="" gtbfieldid="44">
我的问题是,即使表单被放置在纯html标签中,我怎么能要求MVC添加这些属性呢?我相信BeginForm方法会在内部将formcontext对象分配给viewCotnext的属性formcontext。如果您不想使用普通的html表单标记,您必须像
<%
this.ViewContext.FormContext = new FormContext();
%>
这里的问题是,Html.EnableClientValidation()标记内部Html.BeginForm,以创建将存储客户端验证元数据的FormContext。现在,任何呈现验证消息的HTML助手方法也会在FormContext中注册适当的客户端验证元数据。如果使用helper,结果就是您得到的结果。但是,如果您尝试使用HTML语法而不是帮助程序,则FormContext永远不会注册,因此验证也永远不会添加 问候,
Huske您是否尝试设置ViewContext对象的formcontext属性