2010-09-13 23 views
6

是否可以使用HTMl.RenderAction使用Ajax來提供參數?Html.RenderAction使用AJAX

我有這樣

[ChildActionOnly] 
Public ActionResult EmployeeData(string id) 
{ 
    Employee employee = new Employee(); 
    //do work to get data 

    Return PartialView(employee); 
} 

控制器操作的局部視圖僅僅是一個小桌子與一些員工數據(姓名,地址等)

然後我有一個網頁下拉數據字段爲員工數據所需的id列表(字符串ID)

我想使用ajax,因此當從下拉列表中選擇員工時,EmployeeData部分視圖將顯示在其下方,而不刷新頁面。然後再次選擇另一個員工。

雖然我不知道如何做到這一點,如果有可能的話。


正如這裏推薦的是我現在擁有的。 (請不要介意,這不是我上面提到的員工數據示例,數據沒有準備好在數據庫中,而且我有多個區域可以做同樣的事情,所以我決定今天在這一個工作)

這裏是我的JS在我看來

$("#repList").change(function() { 
    var id = $("#repList").val(); 
    $.ajax({ 
     url: '/Reporting/GetSalesTargets/' + id, 
     success: function (result) { 

       $("#partialdiv").html(result); 
     }, 
     error: function() { 
      alert("error"); 
      } 
    }); 
}); 

我越來越控制器動作,將返回的觀點,這裏是它。

public ActionResult GetSalesTargets(string id) 
{ 
    int month = DateTime.Now.Month; 
    SalesMarketingReportingService mktSrv = new SalesMarketingReportingService(); 

    SalesTargetModel model = mktSrv.GetRSMSalesTargetModel(id, month); 

    return PartialView(model); 
} 

回答

16

這是可能的,但你必須刪除[ChildActionOnly]屬性。這成爲一個正常的行動,返回您可以使用AJAX調用的部分視圖:

$.ajax({ 
    url: '/home/employeedata/123', 
    success: function(result) { 
     $('#somedivid').html(result); 
    } 
}); 
+0

如何在成功函數中顯示partial? – twal 2010-09-13 18:48:26

+0

'$('#somedivid')。html(result);'其中'somedivid'是一個DOM元素的id,它將包含結果。 – 2010-09-13 18:49:29

+0

哦,我明白了,我很抱歉我錯過了$('#somedivid')。謝謝,我會試試這個! – twal 2010-09-13 18:51:30

相關問題