【问题标题】:Refresh issue in ASP.Net MVC4 viewASP.Net MVC4 视图中的刷新问题
【发布时间】:2012-11-23 05:32:50
【问题描述】:

我在 ASP.Net MVC4 中有如下代码。我正在使用 Razor 引擎。

@{
    string sDefaultEnvironId = string.Empty;

} 
<script language="javascript" type="text/javascript" >
    function changeHd() {
        $("#hdSelEnvironmentId").val("1");
    }
</script>
<input type="button" value="ChangeHD" onclick="changeHd();" />
@Html.Hidden("hdSelEnvironmentId", sDefaultEnvironId)

第一次访问该视图时隐藏字段hdSelEnvironmentId的值为空。然后在我单击按钮ChangeHD 后将其更改为1。 但是在我按下F5 之后,隐藏字段hdSelEnvironmentId 的值仍然是1,我希望它具有初始空值而不是1。谁能帮我弄清楚吗?我就是不明白。我正在使用 Firefox 和 Firebug,谢谢。

【问题讨论】:

  • 是浏览器缓存的原因。
  • @KirillBestemyanov,谢谢,无论是否启用浏览器缓存,我该如何解决?
  • @KirillBestemyanov 无论如何,如何在 FireFox 中禁用缓存。谢谢。

标签: asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

编辑 As discovered by Andreas here,您可以通过在输入中添加属性autocomplete=off 来移除此行为:

@Html.Hidden("hdSelEnvironmentId", sDefaultEnvironId, new { autocomplete = "off" })

这种效果不是由于缓存 - 这是 Firefox 的一个功能(错误?),当您刷新页面时,页面的输入似乎不会重新加载来自服务器。

  • 在 Chrome 或 IE 中尝试相同的操作,您会看到值重置为空
  • 清除 Firefox 中的缓存,您会注意到该值仍未重置。

所以,我不确定是否有解决方法,但这个问题似乎仅限于 Firefox。

【讨论】:

  • IE有check for newer version of stored page选项,我们可以使用every time i visit the webpage来获取重置内容。
  • 从我个人看来,Firefox 似乎想给 Web 开发者更多的灵活性,以提高解析 HTTP 响应内容的性能?
【解决方案2】:

而不是设置它

 @{
    string sDefaultEnvironId = string.Empty;

}

只需在 JavaScript 中初始化它。

 $(document).ready(function(){
     $("#hdSelEnvironmentId").val() = "";
    });
    function changeHd() {
            $("#hdSelEnvironmentId").val() = "";   
            $("#hdSelEnvironmentId").val("1");
        }

我认为这会有所帮助..即使在页面刷新时再次加载文档,该值也将设置为空,然后在单击按钮时设置为 1

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 2011-08-14
    • 2011-10-23
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    相关资源
    最近更新 更多