2012-04-03 3 views
0

Salut les gars j'ai contrôleur qui renvoie une vue partielle, le contrôleur est appelé par un script ajax. La vue partical n'a aucun problème à afficher viewdata pour la première fois, mais lorsque le script ajax est invoqué une seconde fois, la vue partical ne le met pas à jour avec de nouveaux viewdata.Viewdata ne montre pas en vue partielle

Code

pour le contrôleur

[HttpGet] 
    public ActionResult getPart(int id) 
    { 
     ViewData["partical"] = id; 

     return PartialView("test"); 
    } 
code

pour une vue partielle

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<PovertyBayHotel.Models.testmodel>" %> 


<p>just a test</p> 

<%: ViewData["partical"]%> 

et ajax qui appellent le contrôleur

<script type="text/javascript"> 
$(document).ready(function() { 

    $("#DropDown").change(function() { 
     var course = $("#DropDown > option:selected").attr("value"); 
     $.ajax({ 
      type: 'GET', 
      url: '/Reservation/getPart', 
      data: { id: course }, 
      success: function (data) { 

       $('#ExtraBox').replaceWith(data); 
      } 
     }); 

    }); 
}); 

</script> 
+0

peut être un problème de mise en cache. Essayez HTTP POST au lieu de GET. – tugberk

+0

essayé les deux ne semble pas fonctionner :( –

+0

essayé de déboguer votre code? Pouvez-vous poster la réponse HTTP (en-têtes et etc.) que vous obtenez? – tugberk

Répondre

1

Peut-être un problème de mise en cache. Essayez HTTP POST au lieu de GET ou définir les ifModified et cache options pour false comme ci-dessous:

$("#DropDown").change(function() { 
    var course = $("#DropDown > option:selected").attr("value"); 
    $.ajax({ 
     type: 'GET', 
     ifModified: false, 
     cache: false, 
     url: '/Reservation/getPart', 
     data: { id: course }, 
     success: function (data) { 

      $('#ExtraBox').replaceWith(data); 
     } 
    }); 

Aussi, essayez de déboguer votre code et de voir vraiment ce qui se passe.

Edit:

Le problème a été résolu en changeant $('#ExtraBox').replaceWith(data); avec $('#ExtraBox').html(data);.

Questions connexes