2010-07-20 5 views
1

Je suis confronté à un problème en affichant la vue partielle dans div avec la propriété updatetargetid de Ajax.ActionLink. Ceci est mon controller-IE div, updatetargetid ne rafraîchit pas sur les requêtes suivantes

[HandleError] 
    public class HomeController : Controller 
    { 
     static NumberViewModel model = new NumberViewModel(); 

     public ActionResult Index() 
     { 

      model.IsDivisibleBy3 = (model.CurrentNumber % 3 == 0); 

      if (Request.IsAjaxRequest()) 
      { 
       return PartialView("ViewUserControl1", model); 
      } 

      return View(); 
     } 

     [ActionName("Increment")] 
     public ActionResult Increment() 
     { 
      model.CurrentNumber++; 
      return RedirectToAction("Index"); 
     } 
    } 

Mon opinion Index -

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Home Page 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <script type="text/javascript"> 

     function ShowResult() { 
      var windowWidth = document.documentElement.clientWidth; 
      var windowHeight = document.documentElement.clientHeight; 
      leftVal = (windowWidth - 655)/2; 
      topVal = (windowHeight - 200)/2;  

      $('#result').css({ 
       "left": leftVal, 
       "top": topVal 
      }); 
      $('#background').fadeIn("slow"); 
     } 


    </script> 
    <div id="background" class="hiddenDiv"> 
     <div id="result" class="popupBox"> 
     </div> 
    </div> 
    <%= Ajax.ActionLink("Show", "Index", new AjaxOptions() { UpdateTargetId="result", OnComplete="ShowResult", HttpMethod="Get" })%> 
    <%= Html.ActionLink("Increment","Increment") %> 

</asp:Content> 

Cela fonctionne dans FF mais pas dans IE6 IE8.

IE Scénario- Donc quand je clique sur 'montrer', la première fois il montre '0 est divisible par 3'. si vous cliquez sur 'Incrément', le nombre est maintenant 1 et n'est pas divisible par 3. Maintenant, si je clique sur 'montrer', '0 est divisible par 3'. Après avoir gardé les points de débogage dans VS, j'ai trouvé - la deuxième fois la demande ne va pas du tout au serveur. Résultant à ne pas mettre à jour le div updatetargetid.

Quelqu'un a-t-il déjà rencontré ce problème?

+0

duplication possible de [asp.net mvc désactiver le cache du navigateur] (http://stackoverflow.com/questions/1160105/asp-net-mvc-disable-browser-cache) –

Répondre

3

à savoir est la mise en cache demande de dubplicate simplement ajouter à votre méthode d'action:

 Response.CacheControl = "no-cache"; 
     Response.Cache.SetETag((Guid.NewGuid()).ToString()); 

pour que vous ayez:

[ActionName("Increment")] 
    public ActionResult Increment() 
    { 
     Response.CacheControl = "no-cache"; 
     Response.Cache.SetETag((Guid.NewGuid()).ToString()); 
     model.CurrentNumber++; 
     return RedirectToAction("Index"); 
    } 
+0

Excellent! Merci KP. – Morin

Questions connexes