IE div, updatetargetid не обновляется при последующих запросах - PullRequest
1 голос
/ 20 июля 2010

Я столкнулся с проблемой при отображении частичного представления в div с помощью свойства updatetargetid Ajax.ActionLink. Это мой контроллер -

    [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 Сценарий Поэтому, когда я нажимаю «показать», в первый раз отображается «0 делится на 3». если нажать «Увеличить», то число теперь равно 1 и не делится на 3. Теперь, если я нажимаю «показать», это показывает, что «0 делится на 3».

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

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

Ответы [ 2 ]

3 голосов
/ 28 июля 2010

т.е. это кеширование дублирующегося запроса, просто добавьте это к вашему методу действия:

        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");
    }
1 голос
/ 29 июля 2010

Если кто-то наткнется на это, вот еще один хороший ответ - Отключить кэш браузера для всего сайта ASP.NET

...