2016-12-05 3 views
0

외래 키에 대한 드롭 다운이있는 기본 삽입 양식을 비계하고 싶습니다.EF 소스에서 웹 응용 프로그램의 Scaffold 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.

웹 응용 프로그램의 Default_Insert.aspx.cs 렌더링과 템플릿의 기본 DynamicData 웹 사이트를 비교 한 스크린 샷을 첨부했습니다. 아래 그림에서 DynamicData/Default_Insert.ascx.cs에서 MetaTable Table 속성을 검사하고 있습니다.

나중 이미지에 불완전한 MetaTable 속성이 있습니다. DataContextType 및 DataContextPropertyName 및 ForeignKeyColumnNames에 대해 null 값을가집니다. 정말 참조를 위해 FormView 제대로

의 메타 테이블을 설정하고 싶습니다 : 아래 이미지에서 코드는 사이트 The dynamic data website has many MetaTable properties pouplated

내 웹 응용 프로그램

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 웹입니다 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); 

다음 양식은 동적 데이터 웹 사이트에서와 같이 모든 외래 키/탐색 속성을 렌더링합니다.

예를 들어 DataContext 및 ForeignKeyName과 함께 ModelMetadata의 모든 속성이 설정되고 채워집니다.