使用Javascript函数中包含的Asp.net代码中的Javacscript参数

时间:2015-09-05 17:14:27

标签: jquery asp.net-mvc

这是我的问题:

<script>
function processRequest(username, sessionToken, connectionId, processType,friendUser) {
    var request = { Username: username, Password: null, SessionToken: sessionToken, ConnectionId: connectionId, ProcessType: processType };
    $.ajax({
        type: "POST",
        url: '@ConfigurationSettings.AppSettings["APIURL"]/people/ProcessConnectRequest',
        data: request,
        datatype: "jsonp",
        success: function(result) {
            if (result === "PROCESSED") {
                $('#item_' + connectionId).remove();

                var htmlContent ='<div class="col-lg-4 gray-box">'
                            +'<div class="general-item-list" id="requestList">'
                              +  '<div class="item">'
                               +     '<div class="item-head">'
                                +        '<div class="item-details">'
                                 +        '@Html.Action("LoadPeopleStatus", "People", new { id ="abc"})'
                                +        '</div>'

                                 +   '</div>'
                              +  '</div>'
                           + '</div>'
                       + '</div>';

                $('#containerBox').append(htmlContent);
            }
        }
    });
}

我想用id ="abc"参数替换friendUser,但不是成功。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Html.Action将在客户端收到页面之前很久就在服务器上呈现,更不用说开始处理脚本或执行成功回调(使用您想要使用的参数)。

不是构建要附加到容器的HTML内容,而是可以根据POST请求将其发回,检查状态代码而不是“PROCESSED”作为成功指标并附加结果(应该包含内容)输入“text / html”)到你的容器。

或者,您可以发回一个带有状态标志的JSON对象,并将HTML内容作为单独的属性发送。

为简单起见,我赞成使用状态代码作为您的成功指标,这意味着您可以简单地附加从服务器收到的响应。

确保将内容作为partial view而不是视图结果(假定为完整页面)返回,因此如果您有内容,则不包括该布局。

您需要将friendUser添加为您的请求的参数,除非可以从您现有的一个请求参数中派生或推断

修改

您是否愿意或无法更改API端点(尽管您应该能够使用accepts header和/或带有附加参数的重载来区分现有的返回行为和新的HTML响应),您将需要在第一个成功回调中(在建立正确的处理之后)发出第二个AJAX请求,将friendUser作为URL的一部分或作为参数传递。这可能是一个GET请求,需要一个控制器操作,它将从您的操作中返回HTML。它可能是服务器缓存的理想候选者,假设它是某种状态或配置文件小部件。鉴于您将拥有两个HTTP连接的延迟以及处理初始POST请求以处理您将要尽快制作并返回小部件。

我建议在这里返回一个PartialView,并将当前位于脚本标记内的HTML放在该视图中,然后使用您传递的模型/ ViewData中的friendUser数据将Action渲染到该视图中的适当位置控制器动作。