MVC3 @ Ajax.Actionlink显示新页面而不是替换targetupdateId

时间:2014-09-02 07:02:46

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

VS2010 / .net4 / MVC3(MVC4有同样的问题)

我试图在我的项目中调用AJAX函数

@Ajax.ActionLink("Display ALL Cbms results", "All" , "Cbms", new AjaxOptions()
{
    HttpMethod = "GET",
    UpdateTargetId = "divCbms",
    InsertionMode = InsertionMode.Replace
})

控制器代码

public PartialViewResult All()
{
    List<cbms> model = cbms.GetAllCBMSData();
    return PartialView("_Cbms", model);
}

但不是替换目标div,而是加载一个全新的页面。

我在_layout页面中引用了不显眼的脚本

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>      
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>  
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

我在这里尝试了很多解决方案,但似乎都没有。 包括:

  • 将jquery脚本更新到最新版本(1.11.1,因为我需要向后兼容旧的IE浏览器)

  • 以下解决方案:

    <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    
  • 将HttpMethod类型更改为:

    @Ajax.ActionLink("<text here>", "All" , "<view name here>", new AjaxOptions()
    {
        HttpMethod = "POST",
        UpdateTargetId = "<div name here>",
        InsertionMode = InsertionMode.Replace
    })
    

我真的不知道如何解决这个问题,我也试过创建一个全新的项目(在MVC4中),但这给出了同样的问题。

检查请求会返回以下结果: Ajax request details

网络检查会返回以下结果: Ajax network header

浏览提供的网址(&#34; http://localhost:58339/Cbms/All?X-Requested-With=XMLHttpRequest&#34;)无问题。但这不是我想要的格式,因此无法解决我的问题。

2 个答案:

答案 0 :(得分:0)

使用如下

@Ajax.ActionLink("Display ALL Cbms results", "All" , "Cbms", new AjaxOptions
{
      HttpMethod = "GET",
      UpdateTargetId = "divCbms",
      InsertionMode = InsertionMode.Replace 
})

更新

@Ajax.ActionLink("Display ALL Cbms results", "All" , "Cbms", new AjaxOptions
{
    UpdateTargetId = "divCbms"
})

答案 1 :(得分:0)

我创建了一个不同的部分(具有不同的ID),并尝试更新该部分。 这很有效(严重)!!!

我完全被吹走了,这怎么可能?我真的不明白......