我在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,谢谢。
答案 0 :(得分:2)
修改 As discovered by Andreas here,您可以通过在输入中添加属性autocomplete=off
来消除此行为:
@Html.Hidden("hdSelEnvironmentId", sDefaultEnvironId, new { autocomplete = "off" })
由于缓存这个效果不 - 它是Firefox的一个功能(bug?),当你刷新页面时,页面的输入似乎没有被重新加载来自服务器。
所以,我不确定是否有解决方法,但这个问题似乎仅限于Firefox。
答案 1 :(得分:1)
而不是在
中设置它 @{
string sDefaultEnvironId = string.Empty;
}
只需在JavaScript中初始化它。
$(document).ready(function(){
$("#hdSelEnvironmentId").val() = "";
});
function changeHd() {
$("#hdSelEnvironmentId").val() = "";
$("#hdSelEnvironmentId").val("1");
}
我认为这会有所帮助..即使在页面刷新时,文档再次加载,该值将设置为空,然后在按钮单击时为1