开发者

IE div, updatetargetid not refreshing on subsequent requests [duplicate]

开发者 https://www.devze.com 2023-01-07 20:14 出处:网络
This question already has answers here: Disable browser cache for entire ASP.NET website (8 answers) Closed 2 years ago.
This question already has answers here: Disable browser cache for entire ASP.NET website (8 answers) Closed 2 years ago.

I am facing an issue while showing the partial view in div with updatetargetid property of Ajax.ActionLink. This is my controller-

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

My Index view -

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

<asp:C开发者_JAVA技巧ontent 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>

This works in FF but not in IE6-IE8.

IE Scenario- So when I Click on 'show', first time it shows '0 is divisible by 3'. if click 'Increment', the number is now 1 and is not divisible by 3. Now if I click on 'show' it shows '0 is divisible by 3'.

After keeping debug points in VS, I found- second time the request does not go to the server at all. Resulting in not updating the updatetargetid div.

Does anybody face this issue before?


ie is caching dubplicate request just add this to your action method:

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

so you will have:

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

精彩评论

暂无评论...
验证码 换一张
取 消