asp.net-mvc-3 - 即使关闭自动完成功能,Firefox 也会缓存隐藏的输入

标签 asp.net-mvc-3 html caching autocomplete hidden-field

我有一个 autocomplete 属性设置为 off 的表单。

在此表单中,有一个隐藏的输入元素(使用 ASP.NET MVC 的 Html.HiddenFor() 方法生成,但是,这应该是无关紧要的):

<input type="hidden" value="0" name="Status" id="Status" data-val-required="The Status field is required." data-val-number="The field Status must be a number." data-val="true">

提交表单时,该值加一,模型返回到 View 。如果我将状态值写入页面,我可以看到该值已正确递增。

但是,这个隐藏的输入字段总是被缓存。它永远不会得到正确的值。我尝试直接在输入元素上设置 autocomplete 属性,但没有成功。

如何让这个隐藏字段获得正确的值?我不想使用任何 Javascript。

编辑:提供更多代码...

Controller

//This code is being executed, and the status is being incremented.
shippingOrder.Status = (shippingOrder.Status != (int)OrderStatus.Closed) ? shippingOrder.Status + 1 : shippingOrder.Status;

查看

@using (Html.BeginForm("Number", "Order", FormMethod.Post, new { id = "orderSummary", autocomplete = "off" })) {
    ...
    @Html.HiddenFor(m => m.Status)
}

最佳答案

根据这篇文章here html 助手,例如 HiddenFor将始终首先使用发布的值,然后是模型中的值。

正如您所说,将值写入页面时您可以看到它增加了,但助手使用的是之前发布的值,这是预期的行为。

该链接建议使用 ModelState.Remove("Status")ModelState.Clear()在分配新值之前。

它还表明另一个选项可能是不使用 HiddenFor助手,而是自己构建隐藏字段。类似这样:

<input type="hidden" name="Status" value="@Model.Status" />

无论哪种方式,您的问题都是基于相似的情况。

关于asp.net-mvc-3 - 即使关闭自动完成功能,Firefox 也会缓存隐藏的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507088/

相关文章:

asp.net-mvc - 隐藏日期时间的 ASP.NET MVC 格式

active-directory - 我可以模拟通过表单例份验证的客户端并建立与 SQL Server 的受信任连接吗?

sql-server - EFCodeFirst 和 SqlCe4 的唯一约束

html - CSS border 属性打破内联 block

ios - AFNetworking不缓存HTTPS请求

multithreading - MESI缓存协议(protocol)

javascript - 上传多个文件时如何获取html标签id?

html - CSS3 脉冲动画在 IE 和 FF 中不起作用

javascript - 文本选择跳转到顶部

ios - iOS 5之前的库/缓存行为