在 MVC 中使用报表控制器打开 .aspx 页面

Open .aspx page with report controller in MVC

我有一个带按钮的 MVC .cshtml 页面。它在一个网格中,我使用 jquery

将行 ID 传递给控制器
<button type="submit" id="btn_View" name="view"
      class="btn_View">

 $(".btn_View_Question").click(function () { 

            var json = [];
            var obj = {};

            var rowID = $(this).closest('tr').attr('id');
            obj.RowId= rowID ;


            console.log(obj);
            json.push(obj)
            var responseDetails = JSON.stringify(json);
            $.ajax({
                url: "/Home/View",
                type: "POST",
                data: responseDetails,
                dataType: "json",
                traditional: true,
                contentType: "application/json; charset=utf-8",
            });

        });

在控制器中class我正在重定向到 aspx 报告页面,如下所示

public RedirectResult ViewQuestionnaire(string[] id)
    {
  var reportParameters = new Dictionary<string, string>();
 reportParameters.Add("ID", id[0]);
 Session["reportParameters"] = reportParameters;
return Redirect("../Reports/ViewQuestionarie.aspx");
}

没有加载 aspx 页面。当我调试它时,aspx 页面的 page_load 也在执行。我在这里做错了什么

重定向将 return 以新的 url 作为位置的 302 响应 header value.You 不应该调用一个操作方法 return 是来自 ajax 调用的 302 响应。

您似乎想将一些数据设置为 Session。您可以使用 ajax 调用来完成该部分。而不是 returning 302 响应,return 具有 url 的 json 数据结构,您希望浏览器被重定向。

public ActionResult ViewQuestionnaire(string[] id)
{
    var reportParameters = new Dictionary<string, string>();
    reportParameters.Add("ID", id[0]);
    Session["reportParameters"] = reportParameters;
    return Json(new {status = "success", url="../Reports/ViewQuestionarie.aspx"});      
}

而在ajax调用的success/done事件中,可以读取json的url属性响应返回并使用它进行重定向。

$.ajax({

    //Omitted some parameters 

    success: function(res) {
        if (res.status === "success") {
            window.location.href = res.url;
        }
    }
});