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