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

标签 c# jquery validation asp.net-mvc-5

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/

相关文章:

javascript - 设置事件线后 chart.redraw() 不工作

javascript - jQuery同时发布多个帖子

c# - 将参数传递给提供给属性的类型

c++ - 在 C++ 中验证二进制输入

javascript - $.when promise 对象不起作用

javascript - HTML 输入模式无法验证

C# MS-Access SQL INSERT INTO 错误

c# - 为什么 StreamReader Constructor (String) 不符合构造函数指南?

c# - Fody Async MethodDecorator 来处理异常

c# - 如何选择最合适的异常类型来抛出?