因此,我当前正在构建一个需要用户模型验证的应用程序,如果向用户填写了不正确的属性,它会告诉他们。
我已设置数据注释,但我不确定如何将错误消息转发回用户?
到目前为止,我已经在我的模型和视图上进行了设置。
Model
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; }
}
And View
@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">
}
My 控制器
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 上的文档,但我无法理解他们如何添加错误消息并且表单知道如何显示给用户带来错误。
我非常困惑。
你需要使用ModelState.IsValid
在你的控制器中以及@Html.ValidationMessageFor(model => model.FirstName)
在你看来:
public ActionResult Index(ViewModel _Model)
{
// Checking whether the Form posted is valid one.
if(ModelState.IsValid)
{
// your model is valid here.
// perform any actions you need to, like database actions,
// and/or redirecting to other controllers and actions.
}
else
{
// redirect to same action
return View(_Model);
}
}
对于你的例子:
@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.LabelFor(m=>m.FirstName)
<br>
@Html.TextBoxFor(m => m.FirstName)
@Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
<br>
@Html.LabelFor(m=>m.LastName)
<br>
@Html.TextBoxFor(m=>m.LastName)
@Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
. . .
<input type="submit" value="Save">
}
控制器:
[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(model);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)