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

时间:2014-09-22 15:47:40

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我注意到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();
}

3 个答案:

答案 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方法,它将给出默认的错误消息。您可以根据条件进一步编辑错误消息。这可以使用属性的属性来完成。