加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:51:14 所属栏目:asp.Net 来源:网络整理
导读:我有一个自动完成属性设置为关闭的表单. 在这个表单中,有一个隐藏的输入元素(使用ASP.NET MVC的Html.HiddenFor()方法生成,但是,这应该是无关紧要的): input type="hidden" value="0" name="Status" id="Status" data-val-required="The Status field is req
我有一个自动完成属性设置为关闭的表单.

在这个表单中,有一个隐藏的输入元素(使用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">

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

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

如何获取此隐藏字段以获取正确的值?我不想使用任何Javascript.

编辑:提供更多代码……

调节器

//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”/>

无论哪种方式,看起来你的问题都是基于类似的情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读