1

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

4

1 回答 1

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>

它对我有用。希望能帮助到你

于 2012-08-13T16:17:06.190 回答