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

回到顶部