2010-07-20 1 views
1

У меня возникает проблема при показе частичного представления в div с атрибутом updatetargetid Ajax.ActionLink. Это мой контроллер-IE div, updatetargetid не обновляется при последующих запросах

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

Мой Индексный -

<%@ 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> 

Это работает в FF, но не в IE6-IE8.

IE Scenario- Итак, когда я нажимаю «show», в первый раз он показывает, что «0 делится на 3». , если нажать «Приращение», номер теперь равен 1 и не делится на 3. Теперь, если я нажму «показать», он показывает, что «0 делится на 3».

После сохранения точек отладки в VS, я обнаружил, что второй раз запрос не отправляется на сервер вообще. В результате не обновлялся файл updatetargetid div.

С кем-либо сталкивается с этим вопросом раньше?

+0

Возможный дубликат [asp.net mvc отключить кеш браузера] (http://stackoverflow.com/questions/1160105/asp-net-mvc-disable-browser-cache) –

ответ

3

т.е. кэширование запроса dubplicate просто добавьте в ваш метод действия:

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

так что вы будете иметь:

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

Отлично! Спасибо KP. – Morin