2012-01-18 4 views
0

검색 폼이있는 응용 프로그램을 만들었으며 아래에는 검색 결과가 포함되어 있습니다. 이제 버튼의 기능을 사용하여 기록을 추가하고 싶습니다.mvc2 with ajax table with back button

문제는 내가 페이지를로드하는 무한 루프에 걸렸습니다. 이유는 확실하지 않습니다. 이것은 FireFox에 있습니다.

나는 방법이 튜토리얼을 따라 한이 작업을 수행합니다 :

http://www.asp.net/mvc/tutorials/contact-manager/iteration-7-add-ajax-functionality-cs

내 코드는 다음과 같습니다

자바 스크립트

<% =Html.JQuery() %> 
<script src="../../../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="../../../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
    <script type="text/javascript"> 

    var _currentCaseId = -1; 
    Sys.Application.add_init(pageInit); 
     function OnBegin() { 
      var caseId = $("#SelectDeceased_hidden").val(); 

      Sys.Application.addHistoryPoint({ "caseId": caseId }); 

      $(document).ready(function() { 
       $("#divTableContainer").html(""); 
      }); 
     } 

     function OnSuccess() { 
      $('#divTableContainer').fadeIn('slow'); 
     } 

     function OnFailure() { 
      alert("Something went wrong. Try again..."); 
     } 

    function pageInit() { 
     // Enable history 
     Sys.Application.set_enableHistory(true); 

     // Add Handler for history 
     Sys.Application.add_navigate(navigate); 
    } 

    function navigate(sender, e) { 
     // Get groupId from address bar 
     var caseId = e.get_state().caseId; 

     // if cases does not match 
     if (_currentCaseId != caseId) { 
      // assign the case id 
      _currentCaseId = caseId; 
      alert(caseId); 
      $(document).ready(function() { 

       $.ajax({ 
        url: "/PostItems/UmiTable?currentCase=" 
              + _currentCaseId 
              + "&EntityType=-1", 
        success: function (data) { 
         $("#divContactList").text(data); 
        } 
       }); 
      }); 
     } 
    } 

그리고 내가 탐색을 관리 할 수 ​​JQuery와 역사 스크립트를 사용한 마지막 내 HTML

<% using (Ajax.BeginForm("UmiTable", new AjaxOptions() { 
             OnFailure = "OnFailure", 
             OnBegin = "OnBegin", 
             LoadingElementId = "divLoading", 
             UpdateTargetId = "divTableContainer" })) %> 
    <% { %> 
    <% using (Html.MooseFieldWrapper("Find case", "StandardForm")) 
     { %>    
      <%= Html.CutomTextBox("Case") %>     
      <li class="Button"><input type="submit" value="Go" /></li> 
    <% } %> 
    <% } %> 
<div id="divLoading">  
    <div><img src="Indicator.gif" alt="loading data" />Loading</div> 
</div> 
<div id="divTableContainer"></div> 
+1

IE와 Chrome에서 코드가 정상적으로 작동하므로 MicrosoftAjax의 버그처럼 보입니다. 어쨌든 오래된 라이브러리입니다. jQuery 대신에 여전히 그것을 사용하고있는 이유가 있습니까? (참조한 방식으로 참조하십시오. 그렇다면 왜 그것을 활용하지 않을까요?) 또한 현대 브라우저에 HTML5 기록 기능이 내장되어 있으므로 사용하지 않는 것이 유감입니다. 예를 들어 우수한 [jquery.history] (https://github.com/balupton/history.js) 플러그인은이를 수행하며 API를 지원하지 않는 레거시 브라우저에서 이전 방법 (URL 조각 사용)으로 정상적으로 저하됩니다. –

+0

@DarinDimitrov : jquery를 사용하지 않고 Microsoft ajax dll을 사용한다고 생각하여이 솔루션을 보았습니다. – cpoDesign

+0

글쎄, 네가 잘못 생각한 것 같아. –

답변