ValidationMessage方法在asp.net mvc中如何工作?

ValidationMessage方法在asp.net mvc中如何工作?,asp.net,asp.net-mvc,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 4,请给我解释一下asp.net mvc中的ValidationMessage()是如何工作的 我已经了解到,如果ModelStateDictionary对象中的指定字段存在错误,它将显示一条验证消息,但是当我尝试使用它时,即使没有发生错误,它也会显示消息错误 这是我的控制器代码 public class HomeController : Controller { public HomeController(logger parameter) { TempData["

请给我解释一下asp.net mvc中的
ValidationMessage()
是如何工作的

我已经了解到,如果ModelStateDictionary对象中的指定字段存在错误,它将显示一条验证消息,但是当我尝试使用它时,即使没有发生错误,它也会显示消息错误

这是我的控制器代码

public class HomeController : Controller
{
    public HomeController(logger parameter)
    {
        TempData["Hi"] = "Hi";
    }

    public ActionResult Index()
    {
        return View();
    }

    public ActionResult update(FormCollection collection)
    {
        data d = new data();
        TryUpdateModel(d , collection.ToValueProvider());
        if (!ModelState.IsValid)
        {
            ModelState.AddModelError("Date", "Error");
        }
        return View("index", d);
    }
}
模型

这是我的视图代码 @{ ViewBag.Title=“index”; }

索引
@TempData[“Hi”]
@Html.ValidationSummary()
@使用(Html.BeginForm(new{action=“update”}))
{ 
@Html.AntiForgeryToken()@Html.TextBox(“id”,70)
@文本框(“日期”,“1991年3月2日12:00:00”)
@Html.ValidationMessage(“日期”,“错误日期格式”)
}
这是我第一次在不提交表单的情况下运行代码时的输出

谁能给我解释一下吗

ValidationMessage()
生成HTML标记以显示错误消息


ValidationMessageFor(model=>model.Date)
仅当存在与模型上的字段相关联的错误消息时,才会生成标记并显示错误消息。另一个很好的地方是,它可以与作为NUGET软件包提供的不引人注目的验证jQuery库配合使用。

您最好在viewmodel中使用数据注释。您需要转到MVC站点,学习基本教程。get方法应该初始化模型的一个实例并将其返回到视图。视图需要声明thr model-
@model yoursassembly.data
,并使用强类型帮助程序正确绑定到模型属性-
@Html.TextBoxFor(m=>m.Date)@Html.ValidationMessageFor(m=>m.Date)
。然后POST方法应该是
公共操作结果更新(数据模型)
,因此所有模型绑定和验证都是开箱即用的。
public class data
{
    public int  Id { get; set; }
    public DateTime Date { get; set; }
}
<h2>index</h2>
@TempData["Hi"]
@Html.ValidationSummary()
@using (Html.BeginForm(new{action= "update"}))
{ 
    @Html.AntiForgeryToken() @Html.TextBox("id", 70)
    @Html.TextBox("Date", "3/2/1991 12:00:00 ص")
    @Html.ValidationMessage("Date","Error date format")
    <input type="submit"> 
}