2016-12-05 8 views
0

外部キーのドロップダウンを持つ基本的な挿入フォームを足場にしたいと思っています。EFソースからのWebアプリケーションの足場DynamicDataドロップ

私はこれを行う方法を理解できないようです。メタデータを作成するとき、すべてのMetaColumnsはMetaColumns型でMetaForeignKeyColumns型はありません。つまり、すべてのプロパティのテキストボックスをレンダリングすることを意味し、ドロップダウンリストはありません。

UIHintsは無効です。私はまずエンティティフレームワークのコードを使用しています。これらのテキストボックスをドロップダウンにするにはどうすればいいですか?実際には、私はMetaDataプロパティが作成されていないと思います(私はおそらくここに何か不足しています)。

AddPermission.aspx(フォームのみ)私はDynamicDataManagerを使用する必要がある場合があり

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; } 

} 

<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(コード最初のモデルの一部)または何か、しかし、私はどのように見つけるか、またはこのページで使用する必要があるかどうかわからないformviewをongside。

また、WebアプリケーションのDefault_Insert.aspx.csのレンダリングと基本的なDynamicData Webサイトのレンダリングとを比較したスクリーンショットも添付しました。以下の図では、DynamicData/Default_Insert.ascx.csでMetaTable Tableプロパティが検査されています。

後のイメージに不完全なMetaTableプロパティがあります。 DataContextType、DataContextPropertyName、およびForeignKeyColumnNamesの値はnullです。私は本当に参考のために適切に

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

この部分のいくつかの部分:

O n個の起動、Iは、の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; }} 
} 
(I永久参照を格納するために使用する静的クラス)

その後、私はメタデータを取得したいページに、私はこの

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

を行うことができ、その後、メタデータを設定します

MyAwesomeForm.SetMetaTable(table); 

と、彼らは、動的データWebサイトと同じように、フォームはするすべての外部キー/ナビゲーションプロパティをレンダリングします。

ModelMetadataのすべてのプロパティは、期待通りに設定され、設定されます。たとえば、DataContextおよびForeignKeyNameはnullではありません。

関連する問題