2016-01-25 1 views
1

J'ai une page MVC .cshtml avec un bouton. Il est dans une grille et je passe la ligne ids au contrôleur en utilisant le jqueryOuvrir la page .aspx avec le contrôleur de rapport dans MVC

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

     }); 

Dans la classe du contrôleur j'allez être redirigé vers une page de rapport de ASPX comme suit

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

La page ASPX n'est pas chargement. Lorsque je le débogue, la page_load de la page aspx est également en cours d'exécution. Qu'est-ce que la mauvaise chose que je fais ici

+0

Êtes-vous sûr que c'est correct? – Shyju

+0

Désolé. J'ai raté la partie tableau j'ai édité la question – udaya726

Répondre

1

Redirect va retourner une réponse 302 avec le nouvel URL comme valeur d'en-tête de lieu.Vous ne devriez pas faire l'appel à une méthode d'action qui renvoie une réponse 302 d'un ajax appel.

Il semble que vous souhaitiez définir des données pour la session. Vous pouvez utiliser votre appel ajax pour toujours faire cette partie. Au lieu de renvoyer une réponse 302, renvoyez une structure de données json avec l'URL que vous voulez que le navigateur soit redirigé.

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

Et en cas success/done de l'appel ajax, vous pouvez lire la propriété url de la réponse JSON à revenir et l'utiliser pour faire la redirection. Votre méthode d'action attend une valeur de chaîne et votre code ajax envoie un tableau.

$.ajax({ 

    //Omitted some parameters 

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