2012-04-03 2 views
0

Im for new to Web 개발 및 그 원리는 너무 명확하지 않아서 사과드립니다.IE9 및 AJAX - List Not Refreshing (ASP.NET 및 MVC3)

지금까지의 이야기 ......

임 ASP.NET MVC3를 배울 수있는 오픈 소스 응용 프로그램을 작성. 이제 나는 새로운 CRUD 컨트롤러를 만드는 단계에서 새로운 유형을 만들 수있게되었습니다. 이제 View가있는 대시 보드를 보유하고있는 SiteAdmin 컨트롤러를 만들었습니다. 보기에는 이 포함됩니다. 나는 다음과 같은 블로그 포스트를 사용하여 탭을 처리하고 난라는 컨트롤러 동작 방법에 인덱스 매개 변수를 전달함으로써 내 탭을 처리하기 위해 AJAX 예제를 사용하기로 결정했습니다

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

JQuery와 UI하는 방법을 학습 한 AjaxGetTab. 이 메소드는 (블로그 포스트 당) 필수 유형에 대한 부분 뷰를 리턴합니다. 부분보기에는 컨트롤러 작업 메서드가 있습니다. CreateTransactionType (HttpPost) - 새 레코드를 만듭니다.

는 "중지하여 문제가 무엇인지이 waffling"

문제는 작성 방법이 완료된 후 뷰의 탭에서 내 목록이 새로 고쳐지지 않는다는 것입니다가. 이 문제는 IE9에만 존재합니다 (테스트 한 IE 만 해당) 이지만 크롬과 Firefox가 작동합니다. 즉 목록이 새로 고침됩니다.

데이터베이스 레코드가 있는지 확인했습니다.

내 코드는 여기에 있습니다 : Dashboard.cshtml에서

JQuery와 :

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

답변

1

교체하여

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

기준 :

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

문제는 IE 캐시 설정 때문에, 아약스 요청을 캐시한다는 것입니다 : 설정에서는 false 작동해야합니다.

+0

신속한 대답을 위해 Charles에게 감사드립니다. 나는 그것을 지금 소용돌이 치고, 당신을 1 달에 알릴 것이다. – garfbradaz

+1

안녕하세요 찰스 - IE9에서 작동했습니다. 정말 고마워요. – garfbradaz