2012-04-11 5 views
0

mvc3 응용 프로그램을 만들었습니다. EF를 사용하여 테이블의 드롭 다운 목록을 채 웁니다.두 테이블의 mvc3에서 dropdownlist를 동적으로 채우는 방법은 무엇입니까?

지금 two dropdownlists이 내 index.cshtml에 있습니다. 각각 다른 테이블에서 채워집니다.

코드 index.cshtml는 : 내 테이블 table1table2

@model Mapping.Models.mydataEntities1

하지만 문제를 모두 가지고있다으로

내가 값을 선택할 수 아니에요 여기에 법인으로 모델입니다 촬영 한 두 테이블에서. :(

내가 모델 @model Mapping.Models.table1

을 제공하지만, 다른 테이블

@using (Html.BeginForm()) 
{ 
    @Html.DropDownListFor(
     x => x.CategoryId, 
     new SelectList(Model.Categories, "Value", "Text"), 
     "-- Select category --" 
    ) 
    <input type="submit" value="OK" /> 
} 

내가이 작업을 수행 할 수 있습니까?

에서 두 개의 드롭 다운에 값을 선택해야 할 때 다음 코드 만 작업을위한처럼

EF를 사용했습니다.

public partial class mydataEntities1 : DbContext 
    { 
     public mydataEntities1() 
      : base("name=mydataEntities1") 
     { 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      throw new UnintentionalCodeFirstException(); 
     } 

     public DbSet<table1> table1 { get; set; } 
     public DbSet<table2> table2 { get; set; } 
    } 
} 
+0

포스트 모델'mydataEntities1'. 두 테이블 모두 올바르게 채워지면 올바르게 작동합니다. – Iridio

+0

@Iridio 질문이 업데이트되었습니다. – Neo

+0

ViewModel @ 아이언 닌자를 사용하여 http://blogs.msdn.com/b/rickandy/archive/2012/01을 읽고 읽으십시오. /09/cascasding-dropdownlist-in-asp-net-mvc.aspx - http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using도 참조하십시오. -the-dropdownlist-helper-as-aspnet-mvc 누락 된 것이 있으면 알려주세요. 추가하겠습니다. – RickAndMSFT

답변

1

될 것

public class MyModel 
{ 
    public Mapping.Models.table1 table1; 
    public Mapping.Models.table2 table2; 
} 

과 : 이런 식으로 뭔가 당신이 모델을 위해 무엇을 사용해야 할 수있다 제대로 다음 코드해야

@Html.DropDownListFor(
    x => x.table1.CategoryId, 
    new SelectList(Model.table1.Categories, "Value", "Text"), 
    "-- Select category --" 
) 

@Html.DropDownListFor(
    x => x.table2.CategoryId, 
    new SelectList(Model.table2.Categories, "Value", "Text"), 
    "-- Select category --" 
) 

작동하지만 난 강력하게 직접 도메인 개체를보기에 데이터를 노출하지하는 뷰 모델을 만들 수 권하고 또는 저장소.

1

데이터 엔티티를 뷰에 직접 밀어 넣는 대신 실제 '모델'을 사용하는 것이 좋습니다. 다음 모델은 내가 EF 사용자 아니지만, 모델이 채워 작품된다고 가정

@model MyModel 
0

뷰 코드

<%: Html.DropDownList("courses","--select--")%> 

컨트롤러 코드

공개 ActionResult 지수() { 합니다 NewClass NW = 새합니다 NewClass();

 IEnumerable<SelectListItem> lt = nw.method().Select(c => new SelectListItem 
     { 
      Text = c.EmpName, 
      Value = c.EmpId.ToString() 
     }); 
     ViewData["courses"] = lt; 

     return View(); 
    } 

모델 코드

공용 클래스합니다 NewClass { DataClasses2DataContext의 dB = 새로운 DataClasses2DataContext(); 공개 IEnumerable 메서드 { 목록 lt = (db.Employees의 val에서 새 Class1 {EmpName = val.EmpName, EmpId = val.EmpId}을 선택하십시오.) Distinct(). ToList(); if (lt! = null) { var values ​​= from val of orderby val.EmpId 선택 val; 반환 값; } else return null; }

} 
public class Class1 
{ 

    public int EmpId{get;set;} 
    public string EmpName { get; set; } 
    public string location { get; set; } 
    public Int64 Phno{get;set;} 

} 

추가 모델 클래스 네임 스페이스 컨트롤러 그것은이의 asp.net mvc3에서 드롭 다운리스트를 채우기 위해 완벽하게 작동합니다 희망을 시도하는

관련 문제