2014-09-11 3 views
2

System.Web.Mvc에 대한 종속성 코드를 제거하려고합니다. MVC 프로젝트 외부의 다른 .dll로 모델을 추출했기 때문에 많은 프로젝트에서 공유 할 수 있습니다. 나는 단순히 string Textstring Value의 두 가지 속성을 가진 단지 class과 같이 보이는 "사용자 정의 SelectListItem"만들려고하고사용자 지정 목록 선택

그러나

public class DropDownListItem 
{ 
    public string Text { get; set; } 
    public string Value { get; set; } 
} 

, 나는이 통과 할 수있는 방법을 찾기 위해 노력하고있다 내보기에 DropDownListFor에 개체. Models.Values 유형 List<DropDownListItem>이다

@Html.DropDownListFor(x => x.Value, Model.Values, new { @class="form-control" }) 

: 내가 좋아하는 뭔가를 할 수 있도록이 조작 어쨌든있다.

+0

당신 자신의 DropDownList HTML 도우미를 만들 수 있습니다. 하지만 내장 된 데이터 유형이 필요합니다. – gunr2171

+1

'@ Html.DropDownListFor (x => x.Value, 새로운 SelectList (Model.Values, "Value", "Text"), 새로운 {@ class = "form-control"})' – Carl

+0

'SelectList' 뷰 구성 요소입니다. 모델에는 'SelectList' 유형의 속성 만 있으면 안되며 뷰 모델 만 포함하면 안됩니다. –

답변

1

요, DropDownListItem 클래스를 만들 필요가 없습니다. exampl에 대한

, 당신은 다음과 같은 클래스가 있다고 가정 해 봅시다 :

class MyClass 
{ 
public int Id {get; set; } 
public string name {get; set; } 
} 

DropDownList로 마녀를 가지고는 MyClass의 목록이 포함되어 있습니다를, 당신은 단순히 juste 수는 사용

@Html.DropDownListFor(model => model.Entiy.Id, new SelectList(MyList, "Id", "Name")) 

ID가 값을 repensent 이름이 텍스트가됩니다. 희망이 도움이됩니다.

-2

당신은 viewbag의 목록 항목을 넣어 이런보기에 값을 얻을 수 있습니다 :

Modelo.AdminSitio = Modelo.GetAdminSitio(); 
ViewBag.Ligas = new SelectList(Modelo.AdminSitio.ListadoLigas, "Value", "Text"); 

listdoLigas이 동일

@Html.DropDownList("Ligas") 

와 코드 숨김

ListadoLigas= (from x in db.Ligas select new DropDownListItem { Value = x.Oid_Liga, Text = x.NombreDeLiga}).ToList(); 
+0

'ViewBag'는 이것을하기에 좋지 않은 방법이며, 모델과 함께 전달되어야합니다. 어느 쪽이든, 이것은 작업을 수행하지 않는 것 같습니다. –