1

这应该很简单,但我没有看到它,所以我希望有人能提供帮助(我所有的帖子可能都是这样开始的)。所以我有一个模型进入控制器。

[HttpPost]
public ActionResult Index(Policy screenModel)

我想在更新之前对该模型做一些特定的事情,例如:

If (condition)
    screenModel.AgentNumber = 1000;

现在我需要在 TryUpdateModel 或 ModelState.IsValid 触发之前将 screenModel 返回到 ValueProvider 中,否则更改不会做任何事情。如果我在方法中接受 FormCollection,我可以简单地这样做:

this.ValueProvider = collection.ToValueProvider();

但还有其他原因我没有使用 FormCollection。如何将对象返回到 ValueProvider?

4

1 回答 1

1

首先,在使用模型作为参数传递的方法时,不应该调用 TryUpdateModel 或 UpdateModel。这些基本上是在调用方法之前执行 UpdateModel 。

其次,UpdateModel 旨在将对象从 FormsCollection 复制到模型中,它会覆盖您放入其中的任何内容。

第三,ModelState 也在方法被调用之前更新。

如果您想做这种事情,那么自定义模型绑定器可能是要走的路。

于 2012-08-13T19:37:54.190 回答