2011-09-20 2 views
1

컨트롤러로 초기화되고 채워진 SelectList를 가져 오는 MVC에 DropDownList가 있습니다. 목록에있는 특정 페이지의 목표는 새로 고치지 않고 "Ajax를 사용하여 사용자에게 즉시 옵션 X를 선택했습니다"라고 응답하는 것입니다.AJAX에 의해 캐시 된 SelectList

내가 겪고있는 문제는 드롭 다운이 제대로 렌더링되고 올바르게 다시 게시되는 동안 새로운 옵션을 추가하거나 이전 응답 메시지를 수정하려는 시도가 헛된 것입니다.

내보기 :

<script type="text/javascript" src="../../Scripts/MicrosoftAjax.js"></script> 
    <script type="text/javascript" src="../../Scripts/MicrosoftMvcAjax.js"></script> 
    <h2>Configuration</h2> 
     <% Using (Ajax.BeginForm("HandleConfigForm", New AjaxOptions With {.UpdateTargetId = "ConfigResults"}))%> 
     Select the config file you wish to view: <%= Html.DropDownList("cprotocols")%> 
     <br /><br /> 
     <input type="submit" value="Submit" /> 
     <br /> 
     <br /> 
     <span id="ConfigResults"></span> 
     <% End Using%>  

내 컨트롤러 :

Function Configuration() As ActionResult 

     Dim configList As List(Of String) = New List(Of String) 
     configList.Add("A") 
     configList.Add("B") 
     configList.Add("C") 
     configList.Add("D") 
     configList.Add("test") 

     ViewData("cprotocols") = New SelectList(configList) 

     Return View() 
    End Function 

    Function HandleConfigForm(ByVal cprotocols As String) As String 
     Select Case cprotocols 
      Case "A" 
       Return "You picked: dat option" 
      Case "B" 
       Return "You picked: dat option B" 
      Case "C" 
       Return "You picked: wat even is C" 
      Case "D" 
       Return "You picked: choice D" 
      Case "test" 
       Return "cache" 
     End Select 

     Return [String].Empty 
    End Function 

이전에 내 코드도 Configuration()HandleConfigForm())에 ("test"을 가지고 있지 않았고, 또한, 경우에는 "A"에 사용되는 주석이 말을 "dat option A"

내 사이트를로드 할 때 드롭 다운 목록에는 A부터 D까지의 옵션이 표시되지만 테스트는 수행되지 않습니다. 어는 "dat option"이 아닌 "dat option A"을 다시 게시하는 것을 제외하고 적절한 메시지를 제공합니다.

어떻게 든 내 기능이 손상되어 브라우저가 Javascript에 의해로드 된 이전 데이터를 캐싱하고 있다는 것 외에 어떤 현상이 일어나는지 전혀 알지 못합니다. configList에 추가하고 Select 스위치에서 반환 값을 변경하는 것 외에 다른 코드를 수정하지 않았으므로 잘못 될 수있는 내용을 볼 수 없습니다.

아이디어가 있으십니까?

답변

0

브라우저는 다른 요청의 결과를 캐시하는 것처럼 아약스 호출의 결과를 캐시합니다.

하나의 솔루션은 0

에 기간을 설정하여 방법에 jQuery를이 URL에 임의의 쿼리 문자열 PARAM를 추가하는 것입니다 사용하는 방법을 명시 적으로 OutputCache 지시문을 추가하는 것입니다.

MicrosoftAjax를 사용한 적이 한번도 없었으므로 어떻게 작동하는지 완전히 알지 못합니다.

관련 문제