小编典典

MVC4 Ajax.BeginForm不替换UpdateTargetId

ajax

关于SO与Ajax.BeginForm的问题有很多关于SO的问题,这些主题没有正确地使用返回的局部视图更新目标元素:
mvc4 ajax更新同一页 ASP.NET MVC 4-Ajax.BeginForm和html5

MVC4(剃刀)-控制器是返回partialview但整个页面正在更新MVC4Ajax不会更新页面内的PartialView
但是,所有这些都可以通过手动写出jQuery ajax或包含缺少的javascript文件来解决。

  @using (Ajax.BeginForm("PostcardDetails", new AjaxOptions()
  {
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "details"
  }))
  {
    <div id="PostcardSearchResults">
      @{Html.RenderAction("PostcardSearchResults", Model);}
    </div>
  }
  <div id="details">
  </div>

相关控制器代码:

[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult PostcardSearchResults(PostcardSearchFilter filter)
{
        PostcardSearchResults model = new PostcardSearchResults(filter);
        return PartialView("_PostcardSearchResults", model);
}

在我的布局中,我引用了这些jQuery文件。此外,我已验证该页面正在输出正确的路径,并且可以找到正确的文件。我试着开关的顺序unobtrusive-ajax.min.jsvalidate.min.js,没有成功。

<script type="text/javascript" src="@Url.Content("~/Scripts/globalize.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.9.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.10.0.custom.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>

此外,在网站的根目录web.config和“查看”文件夹中的web.config中,我包括:

<add key="webpages:Version" value="2.0.0.0"/>
<add key="PreserveLoginUrl" value="true"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

我不知所措。没有引发任何javascript错误,并且控制器已正确命中,并返回PartialViewResult。HTML中的Form元素正在填充所有正确的data-属性。


阅读 243

收藏
2020-07-26

共1个答案

小编典典

没有与jquery.unobtrusive-ajax.min和JQuery 1.9因为jQuery1.9不支持直播()方法的任何一个问题,。因此,您应该使用JQuery迁移插件,并引用JQuery迁移js。

2020-07-26