2009-11-23 70 views
2

我有一个表上有一个字段的约束 - 它可以是1,2或3.(正确的解决方案可能是为此创建查找表,但现在我想知道是否可以在没有查找表的情况下执行此操作。)asp.net mvc和linq to entities:如何从IEnumerable <SelectListItem>包含文本值

我创建了一个返回IEnumerable值的类。我正在使用LINQ to Entities,并希望能够在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

什么文本元素?给我们这个文本元素的例子。 – LukLed 2009-11-23 21:11:51

回答

0

这似乎是工作 - 不知道它的最好的解决方案或不通过。

相反的:

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

我从文本值:

<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 2009-11-23 20:29:04