通过javascript调用控制器方法

Calling a controller method via javascript

本文关键字:方法 控制器 调用 javascript 通过      更新时间:2024-02-15

我有一个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没有被渲染。没有错误,只是什么都没发生。

如何更新我的代码以获得我想要的行为?

喜欢下面的代码,所以如果您有错误,您将把它放在警报框中,或者成功结果将在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);
            }
        });

您可以在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;
        }
    });
}

请确保在操作中包含重定向url,并返回JsonResult而不是ActionResult。我还包括传递guid,以便目标Action并让它查找数据。