使用ajax调用Action不会显示页面

时间:2018-02-23 18:03:56

标签: javascript asp.net-mvc asp.net-ajax

我想用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'
    });
}

我做错了什么?

最好的问候

1 个答案:

答案 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")"

希望它有所帮助。