【问题标题】:MVC 2 date validation only required if checkbox is checked仅在选中复选框时才需要 MVC 2 日期验证
【发布时间】:2010-10-07 14:01:26
【问题描述】:

我正在为我的 Web 应用程序使用 EF4 和 ASP.NET MVC 2。我也在使用数据注释进行验证。

以下可能吗?如果是这样,我将如何实施它?我有一个复选框,以及一个从和到日期。开始日期和截止日期不是必填字段,但是当勾选复选框时,开始日期和截止日期是必填字段。然后必须显示所需的错误。

这怎么可能?

谢谢。

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    您需要为模型类本身创建一个验证属性来验证三个字段。

    例如,查看默认 MVC 项目模板中的 [FieldsMustMatch] 属性。

    【讨论】:

      【解决方案2】:

      这与今天早些时候提出的问题非常相似。无法使用开箱即用的 DataAnnotations 创建属性级别自定义属性,因为您无法访问父类的其他属性值,但可以通过稍微扩展框架来完成。
      See here for more detail and related link

      【讨论】:

        【解决方案3】:

        嗯,在 MVC 中很难实现属性级别的条件验证。但是您可以扩展框架,或者您可以使用其他一些库来实现目标。我在我的项目中成功地使用 nick 的万无一失的验证来进行或有验证。你可以看看here

        【讨论】:

        • 这看起来很有用!
        【解决方案4】:

        在您检查ModelState 的控制器中,您可以在调用View() 之前检查复选框是否被选中

        [HttpPost]
        public ActionResult Index(LoanData myObject) {
        
          //Your custom implementation
          if (!checkBox.Checked) {
            return View();
          }
        
          //Normal validation
          if (ModelState.IsValid) {
            return View("Index", myObject);
          } else {
            return View();
          }
        }
        

        这样您可以根据复选框是否被选中来控制何时进行验证。

        【讨论】:

          猜你喜欢
          • 2011-07-08
          • 1970-01-01
          • 1970-01-01
          • 2013-08-30
          • 1970-01-01
          • 2016-11-09
          • 1970-01-01
          • 1970-01-01
          • 2017-04-02
          相关资源
          最近更新 更多