ASP.NET MVC - 表单和模型绑定器中的多个模型
问题描述:
我有一个需要填充2个模型的表单。通常,我使用ModelBinderAttribute的形式发布动作即ASP.NET MVC - 表单和模型绑定器中的多个模型
[Authorize]
[AcceptVerbs("POST")]
public ActionResult Add([GigBinderAttribute]Gig gig, FormCollection formCollection)
{
///Do stuff
}
在我的表单,字段被命名为相同型号的属性...
在这种情况下但是我需要2个不同的车型填充。
我该怎么做?有任何想法吗?可能吗?
答
...其实最好的办法是做这样的:
public ActionResult Add([GigBinderAttribute]Gig gig, [FileModelBinderAttribute]File file) {
}
您可以使用多个属性!
答
UpdateModel或TryUpdateModel方法可用于执行此操作。您可以通过模型,要绑定的模型,要绑定到该模型的项目的前缀以及表单。例如,如果您的产品型号有“Item.Value”的形式变量,那么你的更新模型的方法是:
UpdateMode(modelObject, stringPrefix, formCollection);
如果您使用实体框架,这是值得指出的是,该方法的UpdateModel不总是在某些条件下工作。不过,它确实对POCO起到了很好的作用。
答
在这样的情况下,我倾向于做一个单一的模式类型的收官之所涉及的各种机型:
class AddModel
{
public Gig GigModel {get; set;}
public OtherType OtherModel {get; set;}
}
...并结合这一点。
+1
您只需确保表单字段名称的前缀为属性的名称,例如Gig.Name,Gig.Date和OtherModel.SomeProperty – superlogical 2009-06-22 10:13:17
是否有可能通过使用属性自动执行此操作? – iasksillyquestions 2009-01-18 23:30:49