gpt4 book ai didi

c# - ASP.NET MVC 验证在加载页面后显示错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:29 25 4
gpt4 key购买 nike

ASP.NET MVC 验证在加载页面后显示错误(在 ValidationSummary 中),我想在单击“提交”按钮后显示它。我的代码是:

布局:

<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*"));

Controller :

        public ActionResult VacancyForm(int? ID, VacancyFormViewModel model)
{
VacancyFormViewModel model = new VacancyFormViewModel();
....
return View(model);
}

最佳答案

您不应该在 GET 方法中有一个参数,它是一个复杂的对象(在您的例子中是 VacancyFormViewModel)。除了这创建的丑陋的查询字符串之外;

  1. 如果模型包含大量属性,或具有long 值,它将超过查询字符串限制并抛出异常;
  2. 如果模型包含复杂对象的属性,或者集合,则绑定(bind)将失败(内部路由值字典是根据 ToString() 的值生成的属性(property))

在您的情况下,DefaultModelBinder 会初始化 VacancyFormViewModel 的新实例并设置其属性的值(根据以上几点可能成功也可能不成功)。因为您对一个或多个属性具有验证属性,所以这些错误会添加到 ModelState 中,因此会显示在表单中。

如果该方法用于创建新的VacancyFormViewModel,则只需在该方法中初始化模型的新实例即可。如果它用于编辑现有的 VacancyFormViewModel,则将 ID 作为参数传递,并根据 ID 从存储库中获取对象。

关于c# - ASP.NET MVC 验证在加载页面后显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28418104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com