我有一个评论页面,显示用户在前几页中输入的信息。我知道通常 MCV 在提交表单时会显示验证错误。我希望在页面首次显示时显示验证消息。我该怎么做呢?
问问题
2243 次
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 回答