2011-05-04 4 views
0

ASP.Net MVC 3에서 Html.DropDownListFor 도우미를 사용할 때 SelectList를 채우는 올바른 방법은 무엇입니까?SelectList와 함께 Html.DropDownListFor() 사용

기본적으로 특정 필드에 대해 항목 값을 지정하려는 "작성"양식이 있습니다. 예를 들어, 영화 데이터베이스이고 장르를 입력 할 수있는 기능이 필요하지만 사용자가 좋아하는 것을 입력 할 수 없기 때문에 SelectList를 가장 좋은 대답으로 가정합니다.

작동하는 방법은 selectList의 반환 정적 방법으로 새로운 클래스를 만드는 것입니다

:

public class Genres 
{ 
    public static List<string> GetGenres() 
    { 
     List<string> myGenres = new List<string>(); 
     myGenres.Add("Comedy"); 
     myGenres.Add("Romantic Comedy"); 
     myGenres.Add("Sci-Fi"); 
     myGenres.Add("Horror"); 

     return myGenres; 
    } 
} 

다음과 같이 사용할 수 있습니다

<div class="editor-field"> 
     @Html.DropDownListFor(model => model.Genre, new SelectList(OLL.Models.Genres.GetGenres())) 
    </div> 

그냥하지 않습니다 그것을하는 권리/가장 쉬운 방법처럼 보입니까? 제 생각 엔 여기 뭔가 분명한 것 같아요.

도움을 주셔서 감사합니다.

+0

이것은 훌륭한 해결책입니다. 아마도'new SelectList' 코드를 다른 메소드로 분해 할 수는 있지만 현재 코드에 문제가없는 것 같습니다. – mellamokb

+0

나는 이것을 할 필요가있는 각 필드에 대해 정적 인 IEnumerables를 가진 일반 모델 클래스를 만들 것이라고 생각한다. 예를 들어'public static IEnumerable Genres = new List { "액션", "어드벤처", "애니메이션"}} – Darren

답변

0

이것은 내가 드롭 다운에 항상 사용하는 간단한 selectList 스타일입니다. 잘하면이 도움이됩니다. 내 내부보기

ViewBag.AlbumListDD = from c in db.Query<DatabaseEntities.VenuePhotoAlbum>("WHERE VenueId = @0", VenueId) 
         select new SelectListItem 
         { 
         Text = c.Name, 
         Value = c.Id.ToString() 
         }; 

:

@Html.DropDownList("AlbumId", (IEnumerable<SelectListItem>)ViewBag.AlbumListDD, new { id = "ChangeAlbum" }) 

는 희망이 아니라이 유용한 찾을 수 있습니다 갈 데이터베이스 경로입니다. 나는 일반적으로 데이터베이스에 이러한 종류의 정보를 모두 보유하고 있으며 사용자가 원하는대로 이러한 드롭 다운 항목을 동적으로 추가/제거하고 변경할 수 있습니다. 유형을 제거 할 때 필요한 장면 뒤에는 SQL 작업이 약간 있지만이 시점에서는 매우 성공적이며 빠른 것으로 입증되었습니다.

0
var og = (from s in DB.Products 
select new SelectListItem 
    { 
     Text = s.ProductName, 
     Value = s.ProductID.ToString() 
    }); 
    ViewBag.lstProducts = new SelectList(getproductname, "ProductID", "ProductName"); 
<p> 
    @Html.DropDownList("AlbumId", (IEnumerable<SelectListItem>)ViewBag.lstProducts, new { @id = "drp" }); 
</p>