【问题标题】:Client-side validation doesn't work in asp.net mvc 1 with "if" condition客户端验证在带有“if”条件的 asp.net mvc 1 中不起作用
【发布时间】:2011-08-18 22:35:49
【问题描述】:

我以前问过这个问题,但我决定更具体一些,所以也许有人可以帮忙。

我的问题是关于这个特殊问题:

在 ASP.NET MVC 应用程序中。我有一个复选框“Food/Bev”,它是一个布尔类型,我在表单上有一个“选择”列表,我想知道如何管理它:

如果复选框被选中:

  • 下拉列表“餐饮服务商”成为必填字段。

  • 除非 Caterer 选项为
    ,否则无法提交请求 从列表中选择。

如果复选框未选中:

  • Caterer 下拉列表不是必填字段。

反之亦然。

  • 如果两个字段都为空,则不需要这些字段。

在模型中我有这个代码:

if (string.IsNullOrEmpty(Caterer)
                && (FoodBeverage == true))
                yield return new RuleViolation("Caterer", "Caterer is a required field");

在视图中我放了这段代码: 对于“选择”字段“Caterer”:

<label for="Caterer">Caterer</label>
                    <% if (Model.Request.Caterer == null && Model.Request.FoodBeverage !=null) %>
                    <select name="Caterer", "required">
               <option>A</option>
               <option>B</option>
               <option>C</option>

对于“复选框”字段“食品/饮料”:

<% if (!Model.Request.FoodBeverage && Model.Request.Caterer == null) %>         
                    <%= Html.CheckBox("FoodBeverage", Model.Request.FoodBeverage, new { @class = "required" })%>  
                    <%= Html.ValidationMessage("FoodBeverage", "*")%>

问题是系统在两种情况下都将这些字段视为“必需”:如果它们都是“空”,或者如果它们中的一个被选中或选中。

看起来表单上的“if”条件不起作用。

【问题讨论】:

    标签: asp.net-mvc validation


    【解决方案1】:

    我认为这里的问题只是 If 逻辑没有被 ValidateInput 属性验证;假设您当然正在使用它。

    因为 MVC1 不进行客户端验证,这可能是您可以实现它的一种情况,以满足您非常具体的要求。

    在表单提交中添加 Javascript Submit 函数,然后您可以检查复选框的状态以及选择列表是否有有效选择,如果不是,则简单地返回 false。

    如果您按原样检查输出代码,您可以找到验证逻辑使用的 CSS 类名称,因此您可以模拟相同的行为。

    另外,我知道这不是一个解决方案,但如果您可以升级到更高版本的 MVC,我会尝试一下,MVC3 中不显眼的客户端验证要优越得多,任何可以避免服务器往返的东西我的书很好。

    【讨论】:

    • 我正在考虑将 MVC 1 至少升级到 MVC 2,但我继承了这个项目,我不确定此时升级是否是个好主意。是否有可能克服这个验证问题,因为我需要它与任何与 mvc 1 一起使用的可用验证插件?非常感谢!
    • 抱歉,我不太了解 MVC1 插件;我确实知道有几个实用程序可以从早期版本转换为 MVC3,但这显然是一个完全不同的问题。我在回答中建议的 Javascript 方法肯定会起作用。
    猜你喜欢
    • 2014-03-25
    • 2011-12-19
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2013-11-13
    相关资源
    最近更新 更多