ASP.NET MVC 验证在加载页面后显示错误
ASP.NET MVC validation shows errors after loading a page
ASP.NET MVC 验证在加载页面后显示错误(在 ValidationSummary 中),我想在单击 "submit" 按钮后显示它。我的代码是:
布局:
<html lang="en">
<head>
@Styles.Render("~/Content/css")
@RenderSection("head", required: false)
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
页数:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
....
}
@section Head {
@Styles.Render("~/styles/jquery-ui-bootstrap-custom-theme")
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
捆绑文件有:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
控制器:
public ActionResult VacancyForm(int? ID, VacancyFormViewModel model)
{
VacancyFormViewModel model = new VacancyFormViewModel();
....
return View(model);
}
您不应在 GET 方法中使用复杂对象的参数(在您的情况下 VacancyFormViewModel
)。除了这创建的丑陋的查询字符串之外;
- 如果模型包含大量属性,或具有
long 值,它将超过查询字符串限制并抛出
异常;
- 如果模型包含复杂对象的属性或
集合,则绑定将失败(内部路由值
字典是根据
ToString()
的值生成的
属性)
在您的情况下,DefaultModelBinder
初始化 VacancyFormViewModel
的新实例并设置其属性的值(根据上述几点,这可能成功也可能不成功)。因为您在一个或多个属性上具有验证属性,所以这些错误会添加到 ModelState
中,因此会显示在表单中。
如果该方法是为了创建一个新的VacancyFormViewModel
,那么只需在该方法中初始化一个模型的新实例。如果它用于编辑现有的 VacancyFormViewModel
,请将 ID
作为参数传递并根据 ID 从存储库中获取对象。
ASP.NET MVC 验证在加载页面后显示错误(在 ValidationSummary 中),我想在单击 "submit" 按钮后显示它。我的代码是:
布局:
<html lang="en">
<head>
@Styles.Render("~/Content/css")
@RenderSection("head", required: false)
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
页数:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
....
}
@section Head {
@Styles.Render("~/styles/jquery-ui-bootstrap-custom-theme")
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
捆绑文件有:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
控制器:
public ActionResult VacancyForm(int? ID, VacancyFormViewModel model)
{
VacancyFormViewModel model = new VacancyFormViewModel();
....
return View(model);
}
您不应在 GET 方法中使用复杂对象的参数(在您的情况下 VacancyFormViewModel
)。除了这创建的丑陋的查询字符串之外;
- 如果模型包含大量属性,或具有 long 值,它将超过查询字符串限制并抛出 异常;
- 如果模型包含复杂对象的属性或
集合,则绑定将失败(内部路由值
字典是根据
ToString()
的值生成的 属性)
在您的情况下,DefaultModelBinder
初始化 VacancyFormViewModel
的新实例并设置其属性的值(根据上述几点,这可能成功也可能不成功)。因为您在一个或多个属性上具有验证属性,所以这些错误会添加到 ModelState
中,因此会显示在表单中。
如果该方法是为了创建一个新的VacancyFormViewModel
,那么只需在该方法中初始化一个模型的新实例。如果它用于编辑现有的 VacancyFormViewModel
,请将 ID
作为参数传递并根据 ID 从存储库中获取对象。