通过javascript调用控制器方法

时间:2015-02-20 09:29:04

标签: javascript ajax asp.net-mvc

我有一个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没有被渲染。没有错误,没有任何反应。

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

2 个答案:

答案 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并让它查找数据。