当前位置:  开发笔记 > 后端 > 正文

ASP.NET MVC - 表单和模型绑定器中的多个模型

如何解决《ASP.NETMVC-表单和模型绑定器中的多个模型》经验,为你挑选了2个好方法。

我有一个表格需要填充2个模型.通常我在表单post post上使用ModelBinderAttribute,即

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

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

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

我该怎么做呢?有任何想法吗?可能吗?



1> iasksillyque..:

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

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

}

您可以使用多个属性!



2> Craig Stuntz..:

在这种情况下,我倾向于使用单一模型类型来包含所涉及的各种模型:

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

......并绑定它.


从MVC 2开始,如果使用EditorFor(model => model.Gig),它会为您提供前缀.您仍然可以将所有子模型作为单独的参数使用,从而允许更容易地细分属性(例如,`ActionResult SomePostAction([Bind(Include = {"list","of","bindable","fields"}, Prefix ="Gig"] GigModel演出,[Bind(...)] OtherModel其他)`).然后你只需要从那里建立一个复合模型:`var m = new AddModel {Gig = gig,OtherType = other }`.
推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有