2009-11-23 1 views
2

하나의 필드에 제약 조건이있는 테이블이 있습니다 - 1, 2 또는 3이 될 수 있습니다. 이것에 대한 조회 테이블을 만들 수 있지만 지금은 조회 테이블없이이 일을 할 수 있는지 궁금하네요.)asp.net mvc 및 linq to 엔티티 : IEnumerable <SelectListItem>의 텍스트 값을 포함하는 방법

값에 대해 IEnumerable을 반환하는 클래스를 만들었습니다. 엔티티에 LINQ를 사용하고 있으며 텍스트 값을 col로 표시하려고합니다. 모든 엔티티를 나열 할 때./편집을 생성하기위한

코드는 외모와 같은 :

Controller.cs :

ViewData["Message_Types"] = MessageTypes.MessageTypeList; 

edit.aspx :

<%= Html.DropDownList("Message_Type",(IEnumerable<SelectListItem>)ViewData["Message_Types"]) %> 

와 잘 TryModelUpdate를 사용하여 작품을 바인딩 기본 모델 :

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(int id, FormCollection form) 
{ 
    ... 
    TryUpdateModel(editItem, new string[] { "Message_Type" }); 
    ... 
} 

방법 그러나, 나는 숫자 값 대신 텍스트 값을 표시 할 :

index.aspx를 :

<td> 
    <%= Html.Encode(item.Message_Type) %> 
    </td> 

어떻게 항목에 해당하는 요소의 텍스트 값을 얻을 수 있습니다. Message_type?

업데이트 :

유형과 같이 메시지 :

public static IEnumerable<SelectListItem> MessageTypeList 
{ 
    get 
    { 
    return new[] { 
     new SelectListItem{ Text = "Text Value 1", Value="1" }, 
     new SelectListItem{ Text = "Text Value 2", Value="2" }, 
     new SelectListItem{ Text = "Text Value 3", Value="3" } 
    }; 
    } 

} 
+0

어떤 텍스트 요소 :

<td> <%= Html.Encode(item.Message_Type) %> </td> 

나는에서 텍스트 값을 얻을? 이 텍스트 요소의 예를 들어 보겠습니다. – LukLed

답변

0

이 작동하는 것 같다 - 확실하지가 있다면 최선의 해결책 또는하지. 대신

는 :

<td> 
    <%= Html.Encode(MessageTypes.MessageTypeList.Single(foo => foo.Value == item.Message_Type.ToString()).Text)%> 
    </td> 
0

Enum.GetName() 대해서 typeof (MessageTypes, item.Message_Type)

+0

죄송합니다. 제목이 약간 잘못되었습니다. 실제로 열거 형이 아닌 IEnumerable에서 값을 가져 오려고한다는 것을 보여주기 위해 업데이트했습니다. – chris