这应该很简单,但我没有看到它,所以我希望有人可以提供帮助(我所有的帖子都可能是这样开始的)。 所以我有一个模型进入控制器。
[HttpPost]
public ActionResult Index(Policy screenModel)
我想在更新该模型之前执行特定于该模型的操作,例如:
If (condition)
screenModel.AgentNumber = 1000;
现在我需要在 TryUpdateModel 或 ModelState.IsValid 触发之前将 screenModel 放回 ValueProvider,否则更改不会执行任何操作。 如果我在方法中接受 FormCollection,我可以简单地这样做:
this.ValueProvider = collection.ToValueProvider();
但是还有其他原因我没有使用FormCollection。 如何将对象放回价值提供者?
首先,当使用带有作为参数传递的模型的方法时,不应调用 TryUpdateModel 或 UpdateModel。 这些基本上是在调用方法之前执行 UpdateModel。
其次,UpdateModel 旨在将对象从 FormsCollection 复制到模型中,它将覆盖您放入其中的任何内容。
第三,ModelState 也会在调用方法之前更新。
如果你想做这种事情,那么自定义模型绑定器可能是要走的路。