validation - 在 MVC 3 Razor 中切换验证

标签 validation asp.net-mvc-3 razor

我使用 MVC 3 和 razor 作为 View 引擎并启用了不显眼的客户端验证。

我正在尝试创建一个表单,其中用户有一个单选按钮组来选择他们首选的联系方式 - 电话或电子邮件。根据选择的选项,我想显示适当的文本框,然后还为相应的文本框启用/禁用所需的验证器。

我的标记目前看起来像这样(刚开始使用 MVC,所以请指出任何明显的错误):

<div id="prefferedContact">
    <p>Preferred Contact Method *</p>
        <input type="radio" id="contactMethodEmail" name="PreferredContactMethod" value="email" @if (Model.PreferredContactMethod != "phone"){<text>checked="checked"</text>} /> <label for="contactMethodEmail">by email</label> 
        <input type="radio" id="contactMethodPhone" name="PreferredContactMethod" value="phone" @if (Model.PreferredContactMethod == "phone"){<text>checked="checked"</text>} /> <label for="contactMethodPhone">by phone</label>
    </div>
    <div id="contactMethodDetails" class="formItem">
        <div id="emailAddressBox">
            @Html.LabelFor(x => x.Email, "Email address")
            @Html.TextBoxFor(x => x.Email, new { @class = "textbox" })
        </div>
        <div id="phoneNumberBox">
            @Html.LabelFor(x => x.PhoneNumber, "Phone number")
            @Html.TextBoxFor(x => x.PhoneNumber, new { @class = "textbox" })
            </div>
        </div>
    </div>
</div>

有一些 jquery 函数可以将 onclick 事件添加到单选按钮,以根据所选值在两个框之间切换。

模型 - 对于这些特定字段 - 目前没有任何必需的验证,但绑定(bind)很好。此外,验证正在按预期处理其他领域

我真的只需要了解:

(a) 是否可以打开和关闭验证
(b) 这是否会影响 ModelState 验证(或者我是否需要对其进行自定义)

我也曾想过为联系人数据设置一个文本框,但我想分别对电子邮件和电话号码进行正则表达式验证。如果我有一个文本框,我可以根据所选选项切换文本框上的验证规则吗???

希望有足够的信息足够清楚。

谢谢

乔尔

最佳答案

如果您需要基于多个属性强制执行规则,则可以执行类级别验证:

http://weblogs.asp.net/scottgu/archive/2010/12/10/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3.aspx

Class-level validation

不幸的是,这似乎只适用于服务器端,因此您必须实现自定义客户端验证。

另一种选择是有两个不同的模型,每个场景一个(在基类中具有公共(public)属性),但这可能有点复杂。

关于validation - 在 MVC 3 Razor 中切换验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660093/

相关文章:

javascript - jquery 阻止默认验证和浏览器验证

javascript - 服务器端在哪里验证用户输入?

ios - Swift 中的 XLForm 验证

c# - ASP.NET MVC + Unity 2.0 : lazy loading dependency properties?

c# - 仅显示index.cshtml中的x个项目

java - 自定义 validator 不会为Struts2中 validator 的属性设置参数值

JavaScript 代码无法正常工作

c# - 解析 jQuery 网格中的上下文变量和模式时出错

asp.net-mvc-3 - 如何使用 ViewBag 属性从我的 View 设置 Javascript 变量

c# - 如何在 Visual Studio 中使用 Razor 网页设置数据库并连接到它?