2012-04-03 14 views
0

Hallo Leute, ich habe Controller, der eine Teilansicht zurückgibt, der Controller wird von Ajax-Skript aufgerufen. Die particale Ansicht hat kein Problem, viewdata zum ersten Mal anzuzeigen. Wenn das ajax-Skript jedoch zum zweiten Mal aufgerufen wird, aktualisiert sich die particale Ansicht nicht selbst mit neuen viewdata.Viewdata nicht in Teilansicht

Code für Controller

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

     return PartialView("test"); 
    } 

Code für Teilansicht

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


<p>just a test</p> 

<%: ViewData["partical"]%> 

und die ajax dem der Controller

<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

könnte ein Caching-Problem sein. Versuchen Sie HTTP POST anstelle von GET. – tugberk

+0

versucht, beide es scheint nicht zu funktionieren :( –

+0

versucht, Ihren Code zu debuggen? Können Sie die HTTP-Antwort (Header usw.), die Sie bekommen? – tugberk

Antwort

1

könnte ein Problem sein caching nennen. Versuchen Sie HTTP POST anstelle von GET oder stellen Sie die ifModified und cache Optionen false wie folgt:

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

Versuchen Sie auch, um Ihren Code zu debuggen und sehen wirklich, was los ist.

Edit:

Das Problem, indem $('#ExtraBox').replaceWith(data); mit $('#ExtraBox').html(data); gelöst wurde.