2011-10-05 14 views
6

ASP.NET MVC加載頁面我有這種情況:與AJAX

與2個標籤的手風琴一個頁面,一個具有paymentmethods的列表,第二個有orderlines,金額和總計的訂單摘要(呈現爲partialview)。選擇付款方式會導致訂單總計重新計算,額外成本等可能適用。

使用AJAX選擇付款方法後,推薦顯示新ordersummary的方式是什麼?

做一個AJAX調用並獲取所有新的金額,orderlines等,並使用JS設置這些值似乎對我來說效率低下。理想情況是,如果我可以使用所選的payement方法進行AJAX調用,並且此調用將返回可用於替換舊摘要的HTML。

在服務器上呈現partialview到HTML並使用JSON返回它不好嗎?這種情況的最佳做法是什麼?

回答

2

在動作方法返回一個PartialView([view name])

然後,你可以用jQuery做到這一點:

var req = $.ajax({ 
    type:"GET",//or "POST" or whatever 
    url:"[action method url]" 
    }).success(function(responseData){ 
    $('targetelement').append($(responseData));}); 

哪裏'targetelement'是要向其中注入內容元素選擇。

在將響應附加到目標元素之前,您可能首先需要執行$('targetelement').html('');

更新

或者,更好的是,使用.load從裏克的回答。

+0

Doh我從來沒有意識到你可以只返回一個partialview!謝謝(都)! – jaap

+1

而不是使用append,你可以使用replaceWith或簡單的$(「#element」)。load(...) – kubal5003

+0

是的,我注意到@ rick的答案:)你每天都會學到新的東西。 –

9

我這裏有一個例子:

的Javascript

$("#divForPartialView").load("/HelloWorld/GetAwesomePartialView", 
    { param1: "hello", param2: 22}, function() { 
    //do other cool client side stuff 
}); 

控制器動作

public ActionResult GetAwesomePartialView(string param1, int param2) 
{ 
    //do some database magic 
    CustomDTO dto = DAL.GetData(param1, param2); 

    return PartialView("AwesomePartialView",dto); 
} 
+0

是[your link](http://blog.devlpr.net/2011/01/03/jquery-load-with-mvc-2-partialviews/)出售? – xameeramir

+0

也可以使用'@ Url.Action(「GetAwesomePartialView」,「HelloWorld」)'而不是「/ HelloWorld/GetAwesomePartialView」 –