2016-01-25 110 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; 
     } 
    } 
}); 
相關問題