6

我有一个需要填充 2 个模型的表单。通常我在表单发布操作上使用 ModelBinderAttribute 即

    [Authorize]
    [AcceptVerbs("POST")]
    public ActionResult Add([GigBinderAttribute]Gig gig, FormCollection formCollection)
    {
       ///Do stuff
    }

在我的表单中,这些字段的名称与模型属性相同...

但是在这种情况下,我有 2 个不同的模型需要填充。

我该怎么做呢?有任何想法吗?是否可以?

4

3 回答 3

9

实际上......最好的方法是这样做:

public ActionResult Add([GigBinderAttribute]Gig gig, [FileModelBinderAttribute]File file) {

}

您可以使用多个属性!

于 2009-01-27T22:22:25.683 回答
8

在这种情况下,我倾向于制作一个模型类型来包装所涉及的各种模型:

class AddModel
{
     public Gig GigModel {get; set;}
     public OtherType OtherModel {get; set;}
}

...并绑定它。

于 2009-01-19T15:26:03.057 回答
0

UpdateModel 或 TryUpdateModel 方法可用于执行此操作。您可以通过模型、您希望绑定的模型、您希望绑定到该模型的项目的前缀和表单。例如,如果您的 Item 模型具有“Item.Value”的表单变量,那么您的更新模型方法将是:

UpdateMode(modelObject, stringPrefix, formCollection);

如果您使用的是实体框架,值得指出的是 UpdateModel 方法在某些情况下并不总是有效。不过,它确实适用于 POCO。

于 2009-01-18T22:24:49.937 回答