gpt4 book ai didi

asp.net-mvc - 这是 MVC 模型绑定(bind)中设计的吗?

转载 作者:行者123 更新时间:2023-12-02 21:53:20 24 4
gpt4 key购买 nike

一个我以前从未见过的简单场景,但是一个同事刚刚碰到了——MVC3

  1. Create an action method MyAction(int myProperty = 0)
  2. Create a model that has a property MyProperty
  3. Pass an instance of this model to a strongly typed view, but set the property to 10 in code (don't use the query string parameter!)
  4. In the view, Html.TextBoxFor(x => x.MyProperty)

这应该在文本框中呈现 10。

现在调用操作方法 MyAction?myProperty=8

这不应该仍然在文本框中呈现 10 吗?

我发现我可以覆盖表达式发现的属性,并假设这是因为它们具有相同的名称(查询字符串参数和模型属性)。所有内容都位于 ViewData 中,但其中一个会覆盖另一个。

这是设计使然吗?

最佳答案

这是设计使然 - ModelState是模型属性的最高优先级值(value)提供者,甚至高于模型本身。如果没有查询字符串参数,ModelState 不包含 MyProperty 的值,因此框架使用模型值。

您可以使用ModelState.Remove("MyProperty")来确保使用模型值

关于asp.net-mvc - 这是 MVC 模型绑定(bind)中设计的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18188737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com