在ASP.Net MVC4视图中刷新问题

时间:2012-11-23 05:32:51

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

我在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的值为空。然后在我点击按钮1后,它已更改为ChangeHD。 但是在我按下F5后,隐藏字段hdSelEnvironmentId的值仍然是1,我预计它会使用初始空值而不是1。任何人都可以帮我搞清楚吗?我无法理解它。我正在使用Firefox和Firebug,谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

由于缓存这个效果 - 它是Firefox的一个功能(bug?),当你刷新页面时,页面的输入似乎没有被重新加载来自服务器。

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

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

答案 1 :(得分:1)

而不是在

中设置它
 @{
    string sDefaultEnvironId = string.Empty;

}

只需在JavaScript中初始化它。

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

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