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();
}

DateTime在asp.net中自动返回验证消息

Jack M的回答解决了您关于验证日期的第一个问题,因为它在您的模型中是不可为null的。

为了解决第二个问题,ModelState.IsValid的存在是为了确保在处理操作之前运行服务器端验证。MVC会自动在HTML中添加一些客户端(Javascript)验证,例如,这可以确保您在HTTP发布之前填写了字段的值。然而,如果您要禁用Javascript,或者使用更复杂的验证器,这些验证器将被服务器端验证捕获——这就是使用ModelState.IsValid的地方。

您收到了一个错误,因为您的日期时间不可为null,isValid将根据验证设置检查模型是否有效。在您的情况下,当名称不在任何不可为Null的对象中时,它将无效。

请查看下面的链接。希望这对你的问题有所帮助。

更改消息默认值@Html.ValidationMessage用于mvc 4

由于您包含了DateOfBirth的Html.ValidationMessageFor方法,它将给出默认的错误消息。您可以根据条件进一步编辑错误消息。这可以使用属性的属性来完成。