在Asp.net代码中使用Javacscript参数包含在javascript函数
这里是我的问题:在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"
,但没有成功。任何想法?
很久以前,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呈现在该视图中的适当位置来自控制器的行动。
您正在将客户端逻辑与服务器端模板混合使用。这不是工作,永远。 –
谢谢,我会更改我的代码 – HideTran
试试这个'id = friendUser' –