【发布时间】:2010-10-07 14:01:26
【问题描述】:
我正在为我的 Web 应用程序使用 EF4 和 ASP.NET MVC 2。我也在使用数据注释进行验证。
以下可能吗?如果是这样,我将如何实施它?我有一个复选框,以及一个从和到日期。开始日期和截止日期不是必填字段,但是当勾选复选框时,开始日期和截止日期是必填字段。然后必须显示所需的错误。
这怎么可能?
谢谢。
【问题讨论】:
标签: asp.net asp.net-mvc
我正在为我的 Web 应用程序使用 EF4 和 ASP.NET MVC 2。我也在使用数据注释进行验证。
以下可能吗?如果是这样,我将如何实施它?我有一个复选框,以及一个从和到日期。开始日期和截止日期不是必填字段,但是当勾选复选框时,开始日期和截止日期是必填字段。然后必须显示所需的错误。
这怎么可能?
谢谢。
【问题讨论】:
标签: asp.net asp.net-mvc
您需要为模型类本身创建一个验证属性来验证三个字段。
例如,查看默认 MVC 项目模板中的 [FieldsMustMatch] 属性。
【讨论】:
这与今天早些时候提出的问题非常相似。无法使用开箱即用的 DataAnnotations 创建属性级别自定义属性,因为您无法访问父类的其他属性值,但可以通过稍微扩展框架来完成。
See here for more detail and related link。
【讨论】:
嗯,在 MVC 中很难实现属性级别的条件验证。但是您可以扩展框架,或者您可以使用其他一些库来实现目标。我在我的项目中成功地使用 nick 的万无一失的验证来进行或有验证。你可以看看here
【讨论】:
在您检查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();
}
}
这样您可以根据复选框是否被选中来控制何时进行验证。
【讨论】: