1

我在 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,谢谢。

4

2 回答 2

2

编辑 正如 Andreas 在此处发现的那样,您可以通过在输入中添加属性来删除此行为autocomplete=off

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

这种影响不是由于缓存造成的——它是 Firefox 的一个功能(错误?),当您刷新页面时,页面的输入似乎不会从服务器重新加载。

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

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

于 2012-11-23T05:46:03.930 回答
1

而不是设置它

 @{
    string sDefaultEnvironId = string.Empty;

}

只需在 JavaScript 中初始化它。

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

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

于 2012-11-23T13:28:28.650 回答