ASP .NET MVC在每个字段级别禁用客户端验证
我正在使用带有数据注释和jQuery验证插件的ASP .NET MVC 3。
有没有办法标记某个字段(或某些数据注释)仅应在服务器端进行验证?
我有一个带有屏蔽插件的电话号码字段,而正则表达式验证器在用户端发疯了。regex只是一种故障保护(以防万一有人决定破解javascript验证),因此我不需要它在客户端运行。但是我仍然希望其他验证可以在客户端运行。
回答:
我不确定此解决方案是否适用于MVC3。它肯定适用于MVC4:
您可以在呈现字段之前先在Razor视图中禁用客户端验证,然后在呈现字段后重新启用客户端验证。
例:
<div class="editor-field"> @{ Html.EnableClientValidation(false); }
@Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" })
@{ Html.EnableClientValidation(true); }
</div>
在这里,我们禁用BatchId字段的客户端验证。
我也为此开发了一个小帮手:
public static class YnnovaHtmlHelper{
public static ClientSideValidationDisabler BeginDisableClientSideValidation(this HtmlHelper html)
{
return new ClientSideValidationDisabler(html);
}
}
public class ClientSideValidationDisabler : IDisposable
{
private HtmlHelper _html;
public ClientSideValidationDisabler(HtmlHelper html)
{
_html = html;
_html.EnableClientValidation(false);
}
public void Dispose()
{
_html.EnableClientValidation(true);
_html = null;
}
}
您将按以下方式使用它:
<div class="editor-field"> @using (Html.BeginDisableClientSideValidation()) {
@Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" })
}
</div>
如果有人有更好的解决方案,请告诉我!
希望能有所帮助。
以上是 ASP .NET MVC在每个字段级别禁用客户端验证 的全部内容, 来源链接: utcz.com/qa/404340.html