我有一个页面,我想要一个项目列表(标题项目),其中包含一些详细信息和一个要查看的链接以及一个用于编辑它们的链接。此外,在列表的顶部,我想要一个表单来获取基本详细信息(开始和结束日期),并使用该数据创建一个新的标题项。
我做了什么:
除了一些验证之外,一切似乎都有效。所需的字段验证似乎按预期工作(即如果您没有输入开始日期并单击按钮,则显示“需要开始日期”)。
但是我添加了一些似乎不起作用的额外验证:
添加了验证码
if(this.StartDate> this.EndDate) { yield return new ValidationResult(“Start Date必须在结束日期之前。”,new [] {“StartDate”}); }
这里有什么我想念的吗?
答案 0 :(得分:1)
可能是您的必填字段验证是通过Unobtrusive Client Validation显示的(您的模型可能包含数据注释[Required]
)。此验证通过JavaScript在客户端运行,因此根本不会回发到服务器。
相反,您编写的验证代码在表单回发到服务器后运行。您需要在addHeader()方法中捕获它。这些方面的东西:
[HttpPost]
public ActionResult addHeader(addHeader model)
{
if (!ModelState.IsValid)
{
return View();
}
else
{
//Do Work to add your header...
return View("Index");
}
}
只要您的视图中有@Html.ValidationSummary(true)
,它就会自动显示ValidationResult。 See this for more details.