页面加载MVC3时显示验证错误

时间:2012-08-13 15:57:37

标签: asp.net-mvc-3 validation

我有一个评论页面,显示用户在之前页面中输入的信息。我知道通常MCV在提交表单时会显示验证错误。我希望在首次显示页面时显示验证消息。我该怎么做?

1 个答案:

答案 0 :(得分:2)

如果你想在页面加载中抛出一些验证错误,你可以做类似的事情

public ActionResult MyReadOnlyPage(MyModel model)
{
  /* do your logic with the model */
  ModelState.AddModelError("ModelPropertyName1", "My property error 1");
  ModelState.AddModelError("ModelPropertyName2", "My property error 2");

  return View(model);
}

然后,如果您有ValidationErrorFor或ValidationSummary,您的错误消息应该按预期显示。 如果您想要一个没有链接到属性的错误(因此它只会在摘要中显示),请使用

ModelState.AddModelError("", "generic error");

<强>更新

我做的测试就是这个(从模板中创建了一个新的MVC应用程序):

模型

public class MyViewModel
{
  public string name { get; set; }
  public string surname { get; set; }
}

控制器

public ActionResult Index()
{
  ViewBag.Message = "Welcome to ASP.NET MVC!";
  var model = new MyViewModel();
  ModelState.AddModelError("name", "errror 1");
  return View(model);
}

html

@model MvcApplication1.Models.MyViewModel
@{
   ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>
<p>
  To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
  @Html.ValidationSummary(false)
  @Html.ValidationMessageFor(model => model.name)
  @Html.ValidationMessageFor(model => model.surname)
</p>

它对我有用。希望它有所帮助