使用AJAX的Html.RenderAction

时间:2010-09-13 18:41:23

标签: c# asp.net-mvc ajax renderaction

是否可以使用ajax使用HTMl.RenderAction来提供参数?

我有像这样的控制器动作

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

    Return PartialView(employee);
}

部分视图只是一个包含一些员工数据(名称,地址等)的小表

然后我有一个页面,其中包含员工下拉列表,其中数据字段是EmployeeData所需的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);
}

1 个答案:

答案 0 :(得分:17)

可以但您必须删除[ChildActionOnly]属性。它成为一个普通的动作,返回你可以使用AJAX调用的部分视图:

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