我有一个需要填充2个模型的表单。通常我在表单post post上使用ModelBinderAttribute,即
[Authorize]
[AcceptVerbs("POST")]
public ActionResult Add([GigBinderAttribute]Gig gig, FormCollection formCollection)
{
///Do stuff
}
在我的表单中,字段的名称与模型属性相同......
然而,在这种情况下,我有2个不同的模型需要填充。
我该怎么做?有任何想法吗?有可能吗?
答案 0 :(得分:9)
实际上......最好的方法就是这样做:
public ActionResult Add([GigBinderAttribute]Gig gig, [FileModelBinderAttribute]File file) {
}
您可以使用多个属性!
答案 1 :(得分:8)
在这种情况下,我倾向于制作单一的模型类型来包含所涉及的各种模型:
class AddModel
{
public Gig GigModel {get; set;}
public OtherType OtherModel {get; set;}
}
...并绑定那个。
答案 2 :(得分:0)
可以使用UpdateModel或TryUpdateModel方法执行此操作。您可以传递模型,要绑定的模型,要绑定到该模型的项的前缀和表单。例如,如果您的Item模型具有“Item.Value”的表单变量,那么您的更新模型方法将是:
UpdateMode(modelObject, stringPrefix, formCollection);
如果您正在使用实体框架,则值得指出的是UpdateModel方法在某些情况下并不总是有效。尽管如此,它确实对POCO有效。