gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:54:48 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。

现在调用 Action 方法 MyAction?myProperty=8

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

我看到我可以覆盖表达式发现的属性,并假设这是因为它们具有相同的名称(Query String 参数和模型属性)。然后一切都在 ViewData 中,但一个会覆盖另一个。

这是设计使然吗?

最佳答案

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

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

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

24 4 0
文章推荐: genetic-algorithm - 旅行推销员的启发式
文章推荐: MATLAB:嵌套函数和结构
文章推荐: sas - 根据现有的 id 变量创建唯一的 id 变量
文章推荐: c# - Asp.NET 返回空 List C#