我将ASP.NET MVC 2与实体框架4一起使用。以下是:我有一个复选框和一个文本框(日期选择器)。如果检查了复选框,则需要文本框。如果复选框为false,则不需要文本框。
复选框true =>需要文本框
复选框false =>不需要文本框

<%:Html.CheckBoxFor(model => model.oEnvironment.Remediate) %>
<%= Html.TextBoxFor(model => model.oEnvironment.DatePick)%>

我知道如何创建验证词,但是我不知道如何创建验证类,该类验证是否检查了复选框(如果我的实体补救属性为TRUE),然后根据需要将DatePick字段放置。

任何想法 ?

有帮助吗?

解决方案

尝试这个 关联. 。它应该帮助您入门。

其他提示

如果您不需要客户验证,我建议您使用 ModeState.AddModelError 测试您的逻辑(在控制器中)。

就像是:

[HttpPost]
public ActionResult Edit(MyModel model)
{
        if (model.Remediate && string.IsNullOrEmpty(model.DatePick))
            ModelState.AddModelError("DatePickRequired", "DatePick is required");
        if (!ModelState.IsValid)
            return View(model);
        return View();
}

GTZ,
斯坦法恩。

您可能能够实施 idataErrorinfo 模型上的接口,尽管我自己从未尝试过。

作为一种完全不同的方法,您可以看一下流利的验证项目 http://fluentvalidation.codeplex.com/ 通过控制容器的反转与MVC效果很好 http://fluentvalidation.codeplex.com/wikipage?title=mvc&referringTitle=documentationhttp://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container/

这应该使您能够很好地编码此规则,并且IOC文章显示了如何集成到MVC <3中

(并不是您所说的MVC2的严格答案 http://www.asp.net/mvc/mvc3#bm_model_validation_improvements )

对于复杂验证,只需在操作中(或服务器端的任何地方)执行验证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top