2016-12-05 19 views
0

我想腳手架一個基本的插入表單,其中有外鍵的下拉菜單。腳手架從EF源的Web應用程序動態數據下拉列表

我似乎無法弄清楚如何做到這一點。在創建元數據時,所有MetaColumns都是MetaColumns類型,而不是MetaForeignKeyColumns類型 - 這意味着它爲所有屬性呈現文本框 - 並且沒有下拉列表。

UIHints似乎無效。我首先使用實體​​框架代碼。我如何着手將這些文本框變爲下拉菜單?實際上,我認爲MetaData屬性沒有被創建(我可能在這裏丟失了一些東西)。

AddPermission.aspx(窗體只)

<asp:FormView runat="server" ID="AddPermissionForm" 
ItemType="Common.Models.tag_permission" 
InsertMethod="AddPermissionsForm_InsertItem" DefaultMode="Insert" 
RenderOuterTable="false" OnItemInserted="AddPermissionForm_ItemInserted"> 
<InsertItemTemplate> 
    <fieldset> 
     <ol> 

      <asp:DynamicEntity runat="server" Mode="Insert" EnableViewState="true" ></asp:DynamicEntity> 


      </ol> 
     <asp:Button class="btn btn-primary" runat="server" Text="Insert" CommandName="Insert" /> 
     <asp:Button class="btn btn-default" runat="server" Text="Cancel" CausesValidation="false" OnClick="CancelButton_Click" /> 
    </fieldset> 
</InsertItemTemplate> 

tag_permission.cs(代碼首先模型的一部分)

public partial class tag_permission 
{ 
    [ScaffoldColumn(false)] 
    public short tp_tag_permission_id { get; set; } 

    //foreign key one 
    public string tp_security_group_id { get; set; } 

    //foreign key two 
    public short tp_tag_id { get; set; } 

    [Display(Name = "View")] 
    public Nullable<bool> tp_vis { get; set; } 

} 

我可能會使用一個DynamicDataManager或什麼的,但我不知道在哪裏可以找到如何或如果它應該在這個頁面上使用鋁在formview上。

我還附加了截圖,比較了我的web應用程序中的Default_Insert.aspx.cs和基本DynamicData網站的渲染 - 幾乎與模板相差甚遠。在下面的圖片中,正在DynamicData/Default_Insert.ascx.cs中檢查MetaTable Table屬性。

後面的圖片具有不完整的MetaTable屬性。它具有DataContextType和DataContextPropertyName以及ForeignKeyColumnNames的空值。我真的很想設定元表上FormView控件正確

參考:從下面的圖片中的代碼是

public partial class Default_InsertEntityTemplate : System.Web.DynamicData.EntityTemplateUserControl { 
    private MetaColumn currentColumn; 

    protected override void OnLoad(EventArgs e) { 
     foreach (MetaColumn column in Table.GetScaffoldColumns(Mode, ContainerType)) { 
      currentColumn = column; 
      Control item = new DefaultEntityTemplate._NamingContainer(); 
      EntityTemplate1.ItemTemplate.InstantiateIn(item); 
      EntityTemplate1.Controls.Add(item); 
     } 
    } 
... 

DynamicData網站 The dynamic data website has many MetaTable properties pouplated

我的Web應用程序 My web application has an incomplete MetaTable

回答

0

Theres這個幾個部分:

O ñ啓動,我註冊在Global.asax中的動態數據提供

的Global.asax.cs /其他

App.DefaultModel.RegisterContext(
      new Microsoft.AspNet.DynamicData.ModelProviders.EFDataModelProvider(() => new MyDbContext()), 
      new ContextConfiguration { ScaffoldAllTables = true }); 

App.cs(靜態類我用它來存儲永久的引用)

public static class App 

    ... 

    private static MetaModel s_defaultModel = new MetaModel(); 

    public static MetaModel DefaultModel 
     {get{ return s_defaultModel; }} 
} 

又在哪裏我想要得到的元數據在頁面上我可以做到這一點

ModelMetaTable meta = App.DefaultModel.GetTable(nameof(db.MyAwsomeName)); 

然後將元數據

MyAwesomeForm.SetMetaTable(table); 

然後窗體將呈現所有外鍵/導航屬性,就像它們在動態數據網站中一樣。

然後設置並填充ModelMetadata的所有屬性,如您所期望的 - 例如使用DataContext和ForeignKeyName不再爲空

相關問題