【问题标题】:MVC3 Ajax.BeginForm doesn't show ValidationMessageMVC3 Ajax.BeginForm 不显示 ValidationMessage
【发布时间】:2012-11-02 07:03:36
【问题描述】:

我正在使用 MVC3 + Razor。现在我有一个包含 Ajax.BeginForm(...) 的表单。我完全按照“Maxim”在这篇文章中所说的话:

ASP.NET MVC AJAX with HTML.ValidationMessageFor

我的验证规则定义如下:

ModelState.AddModelError("ControlName", "error message");

然而我的

@Html.ValidationMessageFor(model => Model.OneProperty[0].AnotherProperty) 

什么都没给我。

我还将这些代码放入“错误摘要”的部分视图中。我可以看到代码通过“ValidationSummary”PV 运行,但它就是不显示。

 if (!ViewData.ModelState.IsValid)
 {
    <div id="errorMessage" class="notificationArea">
             @Html.Partial("ValidationSummary")
    </div>
  }

简而言之,我的主要观点是这样的:

@using (Ajax.BeginForm("SaveFromMainView", null, new AjaxOptions
{
    HttpMethod = "POST",
    UpdateTargetId = "myForm"   
}, 
    new { id = "myForm" }))
{           

    @Html.Partial("SamTest1")
}

在这个“SamTest1”部分视图中,还有另一个“ValidationSummary”部分视图来显示错误消息的项目符号。

还有我的操作方法:

return PartialView("SamTest1"); 

提前致谢!

【问题讨论】:

  • 您是否尝试过使用 Html.ValidationSummary?此外,请确保您已启用客户端验证并添加到不显眼的库中。最后,只有当您添加到模型状态的控件名称与控件的验证消息之一的名称匹配时,才会显示任何验证消息。

标签: ajax asp.net-mvc-3 validation


【解决方案1】:

我搞定了。实际上是由于模型绑定不正确。我有一个模型对象列表,并且尽管像 ControlFor(model => Model[0].PropertyName) ... 这样的东西可以工作。其实不是。

将其更改为普通模型绑定后,现在会显示验证消息。

再次感谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2013-02-05
    相关资源
    最近更新 更多