Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Asp.Net Mvc 3客户端验证、属性生成_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc Asp.Net Mvc 3客户端验证、属性生成

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

Asp.net Mvc3在输入元素上添加一些自定义属性,如“需要数据值”以执行验证。我知道这背后的所有理论,它是如何运作的

我想知道的是:

当我在“@using(Html.BeginForm())”中创建表单时,它会生成自定义属性,但当我将表单放在普通“
”标记之间时,它不会创建这些属性

下面是我制作的一个演示,演示我所说的

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属性