Asp.net mvc MVC 4服务器端验证未显示
我有一个场景,其中我有一个通过$.get加载的部分视图。分部代码包含以下代码:Asp.net mvc MVC 4服务器端验证未显示,asp.net-mvc,validation,asp.net-mvc-4,Asp.net Mvc,Validation,Asp.net Mvc 4,我有一个场景,其中我有一个通过$.get加载的部分视图。分部代码包含以下代码: @model MvcApplication1.Models.CmaPartialModel @using (Ajax.BeginForm("TestPost", new AjaxOptions { HttpMethod = "Post" })) { @Html.ValidationSummary() for(var i =
@model MvcApplication1.Models.CmaPartialModel
@using (Ajax.BeginForm("TestPost", new AjaxOptions { HttpMethod = "Post" }))
{
@Html.ValidationSummary()
for(var i = 0; i < Model.DataItemsWithLabels.Count; i++)
{
@Html.LabelFor(m => m.DataItemsWithLabels[i].DataName,Model.DataItemsWithLabels[i].DataName)
@Html.TextBoxFor(m => m.DataItemsWithLabels[i].DataValue)
@Html.ValidationMessageFor(m => m.DataItemsWithLabels[i].DataValue,"data value error")
@Html.TextBoxFor(m => m.DataItemsWithLabels[i].DataName)
@Html.ValidationMessageFor(m => m.DataItemsWithLabels[i].DataName,"data name error")
}
<input type="submit" value="Save" />
}
在客户端验证方面,一切都按预期进行
但是,我在控制器中添加的错误不会显示
我做错了什么
编辑
我已将控制器操作更改为inlcude:ViewBag.Error=错误消息
部分视图包含@ViewBag.Error-这也不是升级。这可能是AJAX的问题吗?AddModelError的第一个参数在这里很重要。它用于确定错误适用于模型的哪个部分
你真是太棒了!考虑到它包含的不是有效的C标识符,它可能不会映射到模型的任何部分
如果要添加常规错误,请使用string.Empty作为第一个参数。您应该会发现它显示在您的验证摘要中。Thaks向Dean寻求帮助。我只是想说明我没有正确使用Ajax.BeginForm。我的观点应该是这样的:
<div id="form">
@using (Ajax.BeginForm("TestPost", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "form" ))}
{
// form stuff here
}
<div>
表单没有更新任何内容-不仅仅是错误,因为我没有UpdateTargetId谢谢。对不起,没有欢乐。我注意到,即使我在controller方法中设置了ViewBag.Property并尝试显示它,它也不会显示。如果我调试,该值在那里,但是表单没有更新。我想知道这是否是一个AJAX问题。你能签入Fiddler查看响应中的内容吗?我想知道当你写这篇文章时,回复是否没有替换包含元素中的内容?看,谢谢-你把我带到那里了。问题只是我忘了在Ajax选项中指定'UpdateTargetId'。
<div id="form">
@using (Ajax.BeginForm("TestPost", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "form" ))}
{
// form stuff here
}
<div>