TDa*_*ver 9 javascript validation razor asp.net-mvc-3
我正在使用带Razor的MVC3.
我在_Layout.cshtml中包含以下内容:
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我的表格如下:
@{
ViewBag.Title = "Register";
Html.EnableClientValidation();
}
@using (Html.BeginForm("Register"))
{
<fieldset>
<p>
@Html.LabelFor(o => o.Email)
@Html.TextBoxFor(o => o.Email)
@Html.ValidationMessageFor(o => o.Email)
</p>
...
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
我的ViewModel具有DataAnnotations(并实现IValidatableObject),并在控制器操作期间进行验证.但是,如果没有发布表单,我似乎无法在客户端使用JS验证.
我错过了什么?
Dar*_*rov 29
在ASP.NET MVC 3中,jquery验证插件是执行客户端验证的默认设置.因此,您可以Microsoft*.js从项目中删除所有脚本.您只需要以下内容:
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
并删除Html.EnableClientValidation();通话.在web.config中启用了客户端验证:
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)