我想用Ajax调用来调用控制器方法。如果调用此方法,则应返回另一个视图。 当我调试代码时,我也达到了我的控制器方法。但是,不显示新视图。 我做错了什么?
控制器:
public ActionResult RequestDetails(string requestId, string requestState)
{
// ToDo handle parameter
return View();
}
JS:
ShowDetails = function (e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
$.ajax({
type: 'GET',
data: {
'requestId': dataItem.RequestId,
'requestState': dataItem.RequestState
},
url: "/Controller/RequestDetails",
contentType: 'application/json; charset=utf-8'
});
}
我做错了什么?
最好的问候
答案 0 :(得分:1)
除非您指示如何处理从ajax调用返回的结果,否则它不会显示。
您需要在主视图上创建一个容器html元素,该元素当前正在页面上显示:
<div id="RequestDetailsContainer">
</div>
然后在success
回调中,您需要将控制器操作返回的html显示在该div中:
$.ajax({
type: 'GET',
data: {
'requestId': dataItem.RequestId,
'requestState': dataItem.RequestState
},
url: "/Controller/RequestDetails",
contentType: 'application/json; charset=utf-8',
success: function(response) { // note this function
$("#RequestDetailsContainer").html(response);
}
});
关于url
属性的附注,您应该使用Url.Action
来生成网址而不是使用字符串文字,如:
url: "@Url.Action("RequestDetails","Controller")"
希望它有所帮助。