【问题标题】:Html.RenderAction using AJAX使用 AJAX 的 Html.RenderAction
【发布时间】:2010-09-13 18:41:23
【问题描述】:

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

我有一个这样的控制器操作

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

    Return PartialView(employee);
}

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

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

【问题讨论】:

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


    【解决方案1】:

    这是可能的,但您必须删除 [ChildActionOnly] 属性。它成为一个正常的操作,返回一个局部视图,您可以使用 AJAX 调用:

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

    【讨论】:

    • 如何在成功函数中显示部分内容?
    • $('#somedivid').html(result); 其中somedivid 是包含结果的 DOM 元素的 ID。
    • 哦,我明白了,很抱歉我错过了 $('#somedivid')。谢谢你,我会试试这个!
    • 好的,所以我正在这样做,但我没有进入成功函数,我添加了一个错误函数,我正在到达那里。如何显示抛出的错误是什么?我用我现在正在处理的代码更新了我的问题。
    • 尝试单步执行代码。可能在控制器操作中引发了异常。同样使用FireBug 可以帮助您查看从服务器发送和接收的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多