2016-01-25 50 views
1

我有一个带有按钮的MVC .cshtml页面。这是在网格中,我使用jQuery在MVC中打开带有报表控制器的.aspx页面

<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", 
      }); 

     }); 

在控制器类,我重定向到一个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页面是没有通过行ID控制器加载。当我调试的时候,aspx页面的page_load也在执行。什么可能是我在这里做的错误的东西

+0

您的操作方法需要一个字符串值,并且您的ajax代码正在发送一个数组。你确定这是正确的吗? – Shyju

+0

对不起。我错过了编辑该问题的数组部分 – udaya726

回答

1

重定向将返回一个302响应与新的url作为位置标题value.You不应该调用一个操作方法,从ajax返回一个302响应呼叫。

看起来像是要将一些数据设置为Session。您可以使用您的ajax调用仍然执行该部分。不要返回302响应,而是返回一个json数据结构,其中包含要将浏览器重定向到的url。

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; 
     } 
    } 
}); 
相关问题