IE9和AJAX-列表不刷新(ASP.NET和MVC3)



我是Web开发及其原理的新手,如果我的问题看起来不清楚,我很抱歉。

迄今为止的故事

我正在编写一个开源应用程序来学习ASP.NET MVC3。现在我正处于创建CRUD控制器以允许我创建一些新类型的阶段。现在我已经创建了一个SiteAdmin控制器,它可以容纳我的仪表板,并具有一个视图。视图将包含选项卡。我一直在学习如何使用以下博客文章和JQueryUI处理选项卡

http://ericdotnet.wordpress.com/2009/03/17/jquery-ui-tabs-and-aspnet-mvc/

我决定使用AJAX示例来处理我的选项卡,通过该示例,我将一个索引参数传递给名为AjaxGetTab的控制器操作方法。此方法(根据博客文章)返回所需类型的部分视图。在部分视图中,有创建控制器操作方法,例如CreateTransactionType(HttpPost),用于创建新记录。

"停止胡言乱语问题出在哪里"

问题是,在Create方法完成后,视图选项卡中的列表不会刷新。这个问题只存在于IE9中(只有我测试过的IE),但Chrome和Firefox可以工作,即刷新列表。

我已检查数据库记录是否存在。

我的代码在这里:

Dashboard中的JQuery。cshtml:

<script type="text/javascript">
    $(document).ready(function() {
        $("#tabs").tabs();
        getContentTab (1);
    });
    function getContentTab(index) {
        var url='@Url.Content("~/SiteAdmin/AjaxGetTab")/' + index;
        var targetDiv = "#tabs-" + index;
        var ajaxLoading = "<img id='ajax-loader' src='@Url.Content("~/Content")/ajax-loader.gif' align='left' height='28' width='28'>";
        $(targetDiv).html("<p>" + ajaxLoading + " Loading...</p>"); 
        $.get(url,null, function(result) {
            $(targetDiv).html(result);
        });
    }

SiteAdminController AjaxGetTab方法:

    /// <summary>
    /// AJAX action method to obtain the correct Tab to use.
    /// </summary>
    /// <param name="index">Tab number</param>
    /// <returns>Partial View</returns>
    public ActionResult AjaxGetTab(int id)
    {
        string partialViewName = string.Empty;
        object model = null;
        //--Decide which view and model to pass back.
        switch (id)
        {
            case 1:
                partialViewName = "_TransactionType";
                model = db.TransactionTypes.ToList();
                break;
            case 2:
                partialViewName = "_DirectionType";
                model = db.DirectionTypes.ToList();
                break;
            case 3:
                partialViewName = "_UserType";
                model = db.UserTypes.ToList();
                break;
            case 4:
                partialViewName = "_CurrencyType";
                model = db.CurrencyTypes.ToList();
                break;
            case 5:
                partialViewName = "_tabError";
                break;
        }
        return PartialView(partialViewName,model);
    }
}

SiteAdminController CreateTransactionType方法:

        [HttpPost]
    public ActionResult CreateTransactionType(TransactionType model)
    {
        try
        {
            // TODO: Add insert logic here
            if (ModelState.IsValid)
            {
                model.id = Guid.NewGuid();
                model.RecordStatus = " ";
                model.CreatedDate = DateTime.Now;
                db.TransactionTypes.AddObject(model);
                db.SaveChanges();
            }
            return RedirectToAction("Dashboard");
        }
        catch
        {
            return PartialView("_tabError");
        }
    }

更换

$.get(url,null, function(result) {
     $(targetDiv).html(result);
});

签字人:

$.ajax({
  type: 'get',
  url: url,
  cache: false,
  success: function(result) {
    $(targetDiv).html(result);
  }
});

问题是IE缓存ajax请求,所以通过在设置中设置cache:ffalse,它应该可以工作。

最新更新