2015-09-05 50 views
0

这里是我的问题:在Asp.net代码中使用Javacscript参数包含在javascript函数

<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); 
      } 
     } 
    }); 
} 

我想friendUser参数来代替id ="abc",但没有成功。任何想法?

+0

您正在将客户端逻辑与服务器端模板混合使用。这不是工作,永远。 –

+0

谢谢,我会更改我的代码 – HideTran

+0

试试这个'id = friendUser' –

回答

0

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

而不是构建HTML内容来追加到您的容器,您可以发送回您的POST请求的结果,检查状态代码而不是“PROCESSED”作为您的成功指标,并追加结果(应该有内容类型“text/html”)到您的容器。

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

为了简单起见,我希望使用状态码作为您的成功指示器,这意味着您可以简单地追加从服务器接收到的响应。

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

您需要friendUser添加作为参数传递给您的请求,除非它可以派生或从现有的请求的一个推断参数

编辑

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

我建议还在这里返回一个PartialView,并将当前在脚本标签内的HTML放在该视图中,然后使用传递的model/ViewData中的friendUser数据将该Action呈现在该视图中的适当位置来自控制器的行动。

相关问题