2012-06-25 2 views
0

보기 추가 대화 상자를 사용하여보기를 생성 할 때 Entity Framework 외래 키를 가져 오는 방법은 무엇입니까?Entity Framework 코드 템플릿 및 외래 키

내 모델

public class System 
{ 
    #region Properties 

    public int SystemId { get; set; } 
    public string SystemName { get; set; } 

    #endregion 
} 

public class Module 
{ 
    #region Properties 

    public int ModuleId { get; set; } 

    //[Required] 
    [Display(Name="Module Name")] 
    public string ModuleName { get; set; } 

    [Display(Name="Date Added")] 
    public DateTime DateAdded { get; set; } 

    //[ForeignKey("CurrentSystem")] 

    public int SystemId { get; set; } 

    //[ForeignKey()] 
    //[ForeignKey("SystemId")] 
    public System System { get; set; } 

    #endregion 
} 

내가 컨트롤러를 클릭

는, 다음보기를 추가처럼 모달가 열리고 있습니다. 필요한 모든 세부 사항을 선택하고 다음이 생성됩니다 (전체보기를 포함하지 않았습니다).

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>Module</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.ModuleName) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.ModuleName) 
     @Html.ValidationMessageFor(model => model.ModuleName) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.DateAdded) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.DateAdded) 
     @Html.ValidationMessageFor(model => model.DateAdded) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SystemId) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SystemId) 
     @Html.ValidationMessageFor(model => model.SystemId) 
    </div> 

    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 
} 

SystemId를 텍스트 필드가 아닌 드롭 다운으로하고 싶습니다. 어떻게해야합니까?

답변

1

속성이 DBSet<System>이고 속성이 DBSet<module> 인 dbContext에서 파생 된 클래스를 만들었습니까? 사용자가 제공하고 "엔티티 프레임 워크로 작업 읽기 및 쓰기"옵션을 가진 컨트롤러를 선택하고 클래스 모듈과 그 아래의 드롭 다운에서 컨텍스트를 모두 선택하면 MVC는 올바른 코드보기와 컨트롤러 코드를 생성해야합니다. 시스템에 대한 콤보를 표시합니다.

나를 위해 MVC4에서 작동했습니다. 컨트롤러를 추가하기 전에 프로젝트를 생성해야합니다. MVC는 반사를 사용하므로 최신 어셈블리가 필요합니다.

+0

완벽하게 작동합니다. – Captain0

1

보기 모델을 사용하십시오. MVC는 데이터 주석을 사용하여 속성을 표시하는 방법을 찾습니다. 뷰가 모델과 다른 방식으로 동작하게하려면 여분의 로직 (즉, int가있는 드롭 다운)을 처리하기 위해 모델을 뷰 모델에 매핑해야합니다. 그런 다음 뷰 모델 클래스에서 뷰를 생성하십시오.

view-model은 여기에 분리 된 부분을 처리하기위한 계층을 추가합니다. 모델이 허용하는 것과 다른 뷰를 원한다면 모델 데이터를 가져 와서 원하는 방식으로 표시 할 뷰 모델 클래스를 추가하십시오.

관련 문제