什么可能导致MVC应用程序在从数据库中拔出后不在IE中显示当前信息?

时间:2016-03-09 16:45:10

标签: javascript jquery asp.net-mvc asp.net-mvc-5 internet-explorer-11

底线前线: MVC字段在Firefox / Chrome上更新,但不在IE上更新(除非我执行特定的序列)。

我有一个ASP.NET MVC 5应用程序,它显示有关事件的信息。如果单击给定的列表项,页面的主要部分将显示有关该事件的所有相关信息。从这里,您可以编辑信息并将更改保存到数据库。

这适用于Firefox,Chrome和IE 11.当用户点击其他事件并返回原始事件时,您会希望从数据库中提取最新数据并填入主要部分。在Firefox / Chrome上,会发生这种情况。在IE 11上,只有在您:

时才会发生这种情况
  1. 在VS
  2. 中调试它
  3. 在IE 11中运行并右键单击某些内容并“检查元素”
  4. 转到“调试器”选项卡
  5. 让它使用VS进行调试
  6. 在VS
  7. 中设置断点

    OR

    1. 退出当前IE 11实例
    2. 重新加载IE 11
    3. 再次点击原始活动条目
    4. 我已经尝试将缓存设置为每次加载页面时强制更新。以下是get事件方法的代码:

      [Authorize(Roles = "Community Admin, Global Admin")]
      public JsonResult GetEvent(int? EventId)
      {
          EventContext context = new EventContext();
          Event events = context.Events.Where(a => a.EventId == EventId && a.Active == true).SingleOrDefault();
      
          if (events == null)
          {
              events = new Event();
              events.CommunityId = this.GetUserProfile().CommunityId;
          }
      
          JsonResult json = new JsonResult();
          json.Data = events;
          json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
      
          return json;
      }
      

      这是处理GetEvent方法的javascript:

      var url = '@Url.Action("GetEvent", "Event")';
      $.getJSON(url, { EventId: eventid },
          function (data) {
              $("#hdnEventId").val(data.EventId);
              $("#txtEventName").val(data.EventName);
              $("#txtEventDescription").val(data.Description);
              $("#txtAddress1").val(data.Address1);
              $("#txtAddress2").val(data.Address2);
              $("#txtCity").val(data.City);
              $("#StateSelector").val(data.State);
              $("#txtZipCode").val(data.Zip);
              $("#txtWebsite").val(data.WebsiteURL);
              $("#txtPhone").val(data.Phone);
              $("#txtEmail").val(data.Email);
              if (data.Active == "1")
                  $("#cbxActive").prop('checked', true);
              else
                  $("#cbxActive").prop('checked', false);
          });
      

      这让我觉得getEvent()方法不会执行,除了它确实如此。控制器方法和javascript之间可能存在某种脱节吗?我会对此感到惊讶,因为它在其他浏览器上运行良好。

      我可以提供其他任何东西来帮助您理解问题吗?

1 个答案:

答案 0 :(得分:2)

看起来$ .getJSON以某种方式缓存数据。尝试禁用它。

How to set cache false for getJSON in JQuery?

$(document).ready(function(){   $ .ajaxSetup({cache:false}); });