MVC3 如何在 TryUpdate 之前修改传入的模型



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

[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 也会在调用方法之前更新。

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

相关内容

  • 没有找到相关文章

最新更新