【发布时间】:2017-09-23 13:33:15
【问题描述】:
所以,我目前正在构建一个需要用户模型验证的应用程序,如果向用户填写了不正确的属性,它会告诉他们。 我已经设置了数据注释,但我不确定如何将错误消息转发给用户? 到目前为止,我已经在我的模型和视图上设置了这个。
模型
public class DatabaseModel
{
[Required(ErrorMessage = ("A first name is required"))]
public string FirstName { get; set; }
[Required(ErrorMessage = ("A last name is required"))]
public string LastName { get; set; }
[Required(ErrorMessage = ("A valid role is required"))]
public string Role { get; set; }
// TODO - Validate rank to only b 1 - 10
//
[Range(1,10, ErrorMessage = ("A rank between 1 and 10 is required"))]
public int Rank { get; set; }
}
和查看
@model RoleCreatorAndEditor.Models.DatabaseModel
@{
ViewData["Title"] = "Index";
}
<h2>User Information</h2>
<p>This is your user information!</p>
@using (Html.BeginForm("Index", "Home", FormMethod.Post)) {
@Html.Label("First Name")
<br>
@Html.TextBoxFor(m => m.FirstName)
<br>
@Html.Label("Last Name")
<br>
@Html.TextBoxFor(m=>m.LastName)
<br>
@Html.Label("Role")
<br>
@Html.TextBoxFor(m => m.Role)
<br>
@Html.Label("Rank")
<br>
@Html.TextBoxFor(m => m.Rank)
<br><br>
<input type="submit" value="Save">
}
我的控制器
public class HomeController : Controller
{
// GET: Home
[HttpGet]
public ActionResult Index()
{
DatabaseModel model = new DatabaseModel();
return View(model);
}
[HttpPost]
public ActionResult Index(DatabaseModel model)
{
if (ModelState.IsValid)
{
ListToDatatable convert = new ListToDatatable();
DataTable user = convert.Convert(model);
DatabaseRepository dbRepo = new DatabaseRepository();
dbRepo.Upload(user);
}
return View();
}
}
我相信模型需要传递回视图才能显示错误消息,虽然我已经阅读了 asp.net 上的文档,但我无法理解他们如何添加错误消息,而表单知道如何向用户显示错误。
我非常困惑。
【问题讨论】:
-
你的控制器在哪里?
-
在视图中包含
@Html.ValidationMessageFor(m => m.FirstName)等(并包含客户端验证的相关脚本。在控制器中您还需要if(!ModelState.IsValid) { return View(model); } -
现在更新问题
-
@karman 我不明白该票的答案,也不明白如何在我自己的问题上使用它
标签: asp.net-mvc error-handling model