仅在选中复选框时才需要MVC 2日期验证

时间:2010-10-07 14:01:27

标签: asp.net asp.net-mvc

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

以下可能吗?如果是这样,我将如何实现它?我有一个复选框,以及来自和迄今为止。起始日期不是必填字段,但勾选复选框后,起始日期和起始日期都是必填字段。然后必须显示所需的错误。

这怎么可能?

感谢。

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

嗯,在物业层面,在MVC中难以实现偶然验证。但你可以扩展框架,或者你可以使用其他一些库来实现目标。我成功地使用nick的万无一失的验证来进行项目中的偶然验证。你可以看看here

答案 3 :(得分:0)

在您检查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();
  }
}

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