[英]ASP.NET MVC - Multiple models in a form and model binders
我有一个表格需要填充2个模型。 通常我在表单post post上使用ModelBinderAttribute,即
[Authorize]
[AcceptVerbs("POST")]
public ActionResult Add([GigBinderAttribute]Gig gig, FormCollection formCollection)
{
///Do stuff
}
在我的表单中,字段的名称与模型属性相同...
但是在这种情况下,我有2个不同的模型需要填充。
我该怎么做呢? 有任何想法吗? 可能吗?
实际上......最好的方法是这样做:
public ActionResult Add([GigBinderAttribute]Gig gig, [FileModelBinderAttribute]File file) {
}
您可以使用多个属性!
在这种情况下,我倾向于使用单一模型类型来包含所涉及的各种模型:
class AddModel
{
public Gig GigModel {get; set;}
public OtherType OtherModel {get; set;}
}
......并绑定它。
可以使用UpdateModel或TryUpdateModel方法执行此操作。 您可以传递模型,要绑定的模型,要绑定到该模型的项的前缀和表单。 例如,如果您的Item模型具有“Item.Value”的表单变量,那么您的更新模型方法将是:
UpdateMode(modelObject, stringPrefix, formCollection);
如果您正在使用实体框架,那么值得指出的是UpdateModel方法在某些情况下并不总是有效。 尽管如此,它确实对POCO有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.