我有一个ASP.NET应用程序,我从JavaScript调用控制器方法。我的JavaScript代码如下所示:
function OnNodeClick(s, e) {
$.ajax({
type: "POST",
url: '@Url.Action("DeviceManifests", "Home")',
data: { selectedRepo: e.node.name },
success: function (data) {
if (data != null) {
$('#GridView').html(data);
}
},
error: function (e) {
alert(e.responseText);
}
});
}
这会调用Home
控制器的DeviceManifests()
方法。
这就是方法的样子:
public ActionResult DeviceManifests(Guid selectedRepo)
{
var repoItem = mock.GetRepoItem(selectedRepo);
return View("Delete", repoItem.childs);
}
该方法被调用,但问题是Delete-View
没有被渲染。没有错误,没有任何反应。
如何更新我的代码以获得我想要的行为?
答案 0 :(得分:0)
请注意下面的代码,如果您有错误,您将在警告框中显示它,否则成功结果将在DOM中呈现
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: '@Url.Action("DeviceManifests", "Home")',
data: { selectedRepo: e.node.name },
dataType: "html",
success: function (data) {
if (data != null) {
$('#someElement').html(data);
}
}
},
error: function (e) {
alert(e.responseText);
}
});
答案 1 :(得分:0)
你可以在javascript端进行重定向。
function OnNodeClick(s, e) {
$.ajax({
type: "GET ",
url: '@Url.Action("DeviceManifests", "Home")',
data: { selectedRepo: e.node.name },
success: function (msg)
{
window.location = msg.newLoc;
}
});
}
确保您在操作中包含重定向网址并返回JsonResult而不是ActionResult。我还包括传递guid以便目标Action并让它查找数据。