DateTime在asp.net中自动返回验证消息
本文关键字:返回 验证 消息 asp net DateTime | 更新日期: 2023-09-27 18:23:52
我注意到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();
}
Jack M的回答解决了您关于验证日期的第一个问题,因为它在您的模型中是不可为null的。
为了解决第二个问题,ModelState.IsValid
的存在是为了确保在处理操作之前运行服务器端验证。MVC会自动在HTML中添加一些客户端(Javascript)验证,例如,这可以确保您在HTTP发布之前填写了字段的值。然而,如果您要禁用Javascript,或者使用更复杂的验证器,这些验证器将被服务器端验证捕获——这就是使用ModelState.IsValid的地方。
您收到了一个错误,因为您的日期时间不可为null,isValid将根据验证设置检查模型是否有效。在您的情况下,当名称不在任何不可为Null的对象中时,它将无效。
请查看下面的链接。希望这对你的问题有所帮助。
更改消息默认值@Html.ValidationMessage用于mvc 4
由于您包含了DateOfBirth的Html.ValidationMessageFor方法,它将给出默认的错误消息。您可以根据条件进一步编辑错误消息。这可以使用属性的属性来完成。