我注意到asp.net mvc中有一些特别之处。
我没有具体说明DateTime的任何验证。 但是,当我按下创建按钮时,如果它保持为空或格式与DateTime格式不兼容,它将自动显示错误消息。这是在ASP.NET MVC中预定义的吗?
AFAIK,它在ASP.NET MVC3中不可用?我现在正在使用MVC 5.它有哪个版本?
其次,我想知道ModelState.IsValid在那里的用途是什么,它的用途是什么?
这是因为我注意到模型状态始终有效,如果它无效,则不会调用create post方法,因为事先会显示错误消息。
public class Employee
{
public int ID { get; set; }
[Required]
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
public DateTime DateOfBirth { get; set; }
}
[HttpPost]
[ActionName("Create")]
public ActionResult Create_Post()
{
Employee employee = new Employee();
UpdateModel(employee);
if (ModelState.IsValid)
{
EmployeeBusinessLayer employeeBusinessLayer = new EmployeeBusinessLayer();
employeeBusinessLayer.AddEmployee(employee);
return RedirectToAction("Index");
}
return View();
}
答案 0 :(得分:0)
您收到错误,因为您的日期时间不可为空,并且isValid将根据您的情况下的验证设置检查该模型是否有效,当该名称不存在于任何非可空对象时,它将无效
答案 1 :(得分:0)
Jack M的回答解决了您关于日期被验证的第一个问题,因为它在您的模型中是不可为空的。
要解决第二个问题,ModelState.IsValid
存在以确保在处理操作之前运行服务器端验证。 MVC会自动在HTML中添加一些客户端(Javascript)验证,例如,确保您在HTTP帖子之前填写了字段的值。但是,如果您要禁用Javascript或使用更复杂的验证器,那么这些将被服务器端验证捕获 - 这是使用ModelState.IsValid的位置。
答案 2 :(得分:0)
请检查以下链接。希望这对你的问题有所帮助。
Change message default @Html.ValidationMessageFor mvc 4
由于你已经为DateOfBirth包含了Html.ValidationMessageFor方法,它将给出默认的错误消息。您可以根据条件进一步编辑错误消息。这可以使用属性的属性来完成。