首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX缓存的SelectList

AJAX缓存的SelectList
EN

Stack Overflow用户
提问于 2011-09-20 23:28:08
回答 1查看 146关注 0票数 1

我在MVC中有一个DropDownList,它获取一个由控制器初始化和填充的SelectList。该列表所在的特定页面的目标是立即向用户回复“您已选择了选项X”,而无需刷新(使用Ajax)。

我遇到的问题是,出于某种奇怪的原因,虽然dropdown可以正确呈现,甚至可以正确返回,但添加新选项或修改以前的响应消息的任何尝试都是徒劳的。

我的观点:

代码语言:javascript
复制
<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%>     

我的控制器:

代码语言:javascript
复制
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

以前我的代码没有"test" (既不是在Configuration()中,也不是在HandleConfigForm())中;另外,在Case "A“中,注释通常是"dat option A"

当我加载我的站点时,下拉列表显示从A到D的选项,但没有测试...选择一个字母会给出适当的消息,除了A回发"dat option A"而不是新的"dat option"

我完全不知道发生了什么,除了不知何故,我的功能已经崩溃,浏览器正在缓存之前由Javascript加载的数据。除了简单地添加到configList和更改Select开关中的返回值之外,我没有对代码进行任何其他更改,所以我看不出有什么地方会出错。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2011-09-20 23:34:23

浏览器将缓存ajax调用的结果,就像缓存任何其他请求的结果一样。

一种解决方案是将一个显式的OutputCache指令添加到您的方法中,并将持续时间设置为0。

jQuery使用的方法是将随机的查询字符串参数附加到url。

我从来没有用过MicrosoftAjax的东西,所以我不完全确定它是如何工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7487716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档