2011-12-12 44 views
0

我对动态数据非常陌生,但无论如何我都会解决这个问题。如何为EF动态数据制作ManyToMany_Insert模板?

我有一个EF模型设置,PJT表连接节目和流派。 EDMX正确地将这显示为节目和流派之间的* - *关系,并具有导航属性。使用动态数据,我可以创建一个显示项目,但只有创建后,才可以编辑它以链接流派(很好地显示为复选框)。

我读过这篇http://blogs.msdn.com/b/davidebb/archive/2008/10/25/a-many-to-many-field-template-for-dynamic-data.aspx文章,但是我看不到如何在Show插入页面上使用ManyToMany_Edit.ascx字段模板。有趣的是,我有ManyToMany_Edit.ascx.cs文件,有一个说

评论//此字段模板既被用于编辑和插入

但我不能看它被用于插入!

任何指针将不胜感激!

回答

0

例如,在Global.asax中创建这样的派生类,变型DefaultModel的

public class MyMetaModel:MetaModel 
{ 
    public MyMetaModel() : base() 
    { 
     this.FieldTemplateFactory = new MyFieldTemplateFactory(); 
    } 

    protected override MetaTable CreateTable(System.Web.DynamicData.ModelProviders.TableProvider provider) 
    { 
     return new MyMetaTable(this, provider); 
    } 
} 

public class MyMetaTable : MetaTable 
{ 
    public MyMetaTable(MetaModel metaModel, TableProvider tableProvider) 
     :base(metaModel, tableProvider) 
    { 
    } 

    public override IEnumerable<MetaColumn> GetScaffoldColumns(System.Web.UI.WebControls.DataBoundControlMode mode, ContainerType containerType) 
    { 
     if (this.Name != "entity1set") return base.GetScaffoldColumns(mode, containerType); 

     List<MetaColumn> result = new List<MetaColumn>(); 

     result.Add(this.GetColumn("Name")); 
     result.Add(this.GetColumn("entity2")); // this can be many to many column 

     return result; 
    } 
} 

问候corporal_lael