Asp.net mvc MVC3如何在TryUpdate之前修改传入模型?

Asp.net mvc MVC3如何在TryUpdate之前修改传入模型?,asp.net-mvc,value-provider,Asp.net Mvc,Value Provider,这应该很简单,但我没有看到,所以我希望有人能帮助我(我所有的帖子可能都是这样开始的)。所以我有一个模型进入控制器 [HttpPost] public ActionResult Index(Policy screenModel) 我想在该模型更新之前对其执行一些特定的操作,例如: If (condition) screenModel.AgentNumber = 1000; 现在我需要在TryUpdateModel或ModelState.IsValid激发之前将screenModel返回

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

[HttpPost]
public ActionResult Index(Policy screenModel)
我想在该模型更新之前对其执行一些特定的操作,例如:

If (condition)
    screenModel.AgentNumber = 1000;
现在我需要在TryUpdateModel或ModelState.IsValid激发之前将screenModel返回到ValueProvider中,否则更改不会起任何作用。如果我在方法中接受FormCollection,我可以简单地执行以下操作:

this.ValueProvider = collection.ToValueProvider();

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

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

其次,UpdateModel设计用于将对象从FormsCollection复制到模型,它将覆盖您在其中放置的任何内容

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


如果您想做这类事情,那么定制模型绑定器可能是最好的选择。

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

其次,UpdateModel设计用于将对象从FormsCollection复制到模型,它将覆盖您在其中放置的任何内容

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


如果你想做这类事情,那么定制模型活页夹可能是最好的选择。

这正是我所担心的,但谢谢你给我答案。关于TryUpdateModel(),我认为这是该方法采用FormCollection时留下的;我会调查的。这是我害怕的,但是谢谢你给我答案。关于TryUpdateModel(),我认为这是该方法采用FormCollection时留下的;我会调查的。