Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC 4服务器端验证未显示_Asp.net Mvc_Validation_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc MVC 4服务器端验证未显示

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 =

我有一个场景,其中我有一个通过$.get加载的部分视图。分部代码包含以下代码:

@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>