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

asp.net-mvc – 生成的视图中的模型值错误

发布时间:2020-12-16 06:31:06 所属栏目:asp.Net 来源:网络整理
导读:使用MVC3和razor进入一个非常奇怪的问题. 我正在组合的应用程序显示了一系列面试问题.我有一个问题的观点(问题的内容来自viewmodel).所以在我从一个问题回复后,我可能会返回相同的问题视图(但使用不同的viewmodel实例). 在viewmodel中我有一个很长的属性,如
使用MVC3和razor进入一个非常奇怪的问题.

我正在组合的应用程序显示了一系列面试问题.我有一个问题的观点(问题的内容来自viewmodel).所以在我从一个问题回复后,我可能会返回相同的问题视图(但使用不同的viewmodel实例).

在viewmodel中我有一个很长的属性,如下所示:

public long QuestionID { get; set; }

我试图使用隐藏的输入字段来存储视图中的值:

@Html.HiddenFor(m => m.QuestionID)

我的问题是,当我从问题到问题时,隐藏字段在最终生成的html中没有变化.在所有进一步的问题中,它仍然是第一个questionID的值.所有其他内容都在变化,我还有一些其他隐藏的字段正常工作.我已在生成模型的控制器中验证了正确的值.我可以在剃刀文件中设置断点,我可以看到模型与正确的QuestionID一样.我尝试使用@ Html.TextBoxFor也有同样的问题.当我手动创建一个像下面这样的隐藏字段时,它工作正常,这真是困扰我.

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

知道为什么会这样吗?

解决方法

在表单发布后,MVC会跟踪ModelState中的发布值.即使您更改模型的值,HiddenFor帮助程序也将首先使用ModelState值.这是因为绑定可能已失败,或绑定可能是一个复杂的对象,ModelState中的字符串值是它们实际输入的内容.

您可以使用以解决此问题

ModelState.Remove("QuestionID");

或者,如果你真的只是想把它当作一个全新的页面,

ModelState.Clear();

(编辑:李大同)

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

    推荐文章
      热点阅读