2012-01-08 100 views
8

我有一個觀點頁面asp.net的MVC partialview @ Ajax.ActionLink不起作用

我的視圖頁面

<div id="beReplaced"> 
    @Ajax.ActionLink("please click on me to bring the partial view", 
        "PatrialViewToBeCalled", 
        new AjaxOptions() 
         {UpdateTargetId = "beReplaced", 
         InsertionMode = InsertionMode.InsertAfter, 
         HttpMethod="Get", 
         LoadingElementId = "prgress" }) 
</div> 

我有一個控制器

public PartialViewResult PatrialViewToBeCalled() 
{ 
    var customer = db.Customers.First(); 

    return PartialView("PartialViewThatMustBeShow",customer); 
} 

但是當我點擊在生成的鏈接上,它將我帶到一個新頁面,而不是 替換或追加div標籤的局部視圖。

什麼問題?

+3

我找到了解決方案。問題是由於損壞的unobtrusive-ajax.min.js文件引起的。 – 1AmirJalali 2012-01-08 15:30:01

+0

你應該發佈這個解決方案,並關閉這 – Shenaniganz 2012-07-19 23:35:24

+0

你是什麼意思關閉?我應該如何關閉它? – 1AmirJalali 2012-07-20 05:14:06

回答

1

我找到了解決方案。問題是由於損壞的unobtrusive-ajax.min.js文件引起的。

0

如果您的jQuery加載到您的網頁,爲什麼不使用簡單的jQuery的get/load方法來獲得局部視圖?

<div id="beReplaced"> 
    <a href="#" id="lnk1">please click on me to bring the partial view</a> 
</div> 

的Javascript

$("#lnk1").click(function(){ 
$.get('/controller/PatrialViewToBeCalled', function(data) { 
     $('#beReplaced').html(data); 
     }); 
}); 
+0

,因爲我想保持我的觀點乾淨,並使其儘可能小和MVC阿賈克斯傭工,使複雜語句的權力。 – 1AmirJalali 2012-01-08 15:33:34

+1

如果我想保持我的觀點清潔,我會堅持不顯眼的原則。我覺得這個jQuery方法比在視圖內部給出你的ajax參數方法要乾淨得多(我希望只有儘可能多的html標記) – Shyju 2012-01-08 16:27:56

+0

Downvoter?關心評論? – Shyju 2013-03-08 17:52:35

10

它可能是你失蹤了:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

在主視圖。這告訴主視圖識別ajax幫手。

+0

+1爲我解決了這個問題 - 非常感謝。 – EM0 2012-09-26 07:58:07

0

如果您正在使用ASP .NET MVC 4個工作確保

@Scripts.Render("~/bundles/jquery") 

是body標籤的結束爲好。

 @Scripts.Render("~/bundles/jquery") 
     @RenderSection("scripts", required: false) 
    </body> 
</html> 
0

我剛剛工作了太久,認爲它沒有工作。查看頁面源也沒有顯示任何內容。

最終,我發現它實際上沒有工作,當我看到在Firebug的控制檯成功請求。它只是顯示在屏幕外。在Firebug的HTML選項卡中,我終於找到了輸出,儘管它沒有顯示在頁面源代碼中。