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