使用 ajax 调用操作不显示页面

Calling Action with ajax doesnt show page

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

我做错了什么?

此致

它不会显示,除非您指示它如何处理从 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: "@Url.Action("RequestDetails","Controller")"

希望对您有所帮助。