asp.net的MVC和LINQ to实体:如何将自IEnumerable&LT文本值; SelectListItem&GT; [英] asp.net mvc and linq to entities: how to include text value from IEnumerable<SelectListItem>
问题描述
我有在一个字段约束的表 - 它可以是1,2或3(正确的解决方案,这可能是创建此查找表,但现在我不知道是否有可能做到这一点没有查找表)。
我已经创建了一个返回一个IEnumerable的值的类。我使用LINQ到实体,并希望能在一个山坳中显示的文本价值。列出所有实体时。
在code为创建/编辑如下:
Controller.cs:
计算机[Message_Types] = MessageTypes.MessageTypeList;
edit.aspx:
&LT;%= Html.DropDownList(Message_Type(IEnumerable的&LT; SelectListItem&GT;)计算机[Message_Types])%GT;
和默认的模型绑定就好用TryModelUpdate作品:
的[AcceptVerbs(HttpVerbs.Post)
公众的ActionResult编辑(INT ID,形式的FormCollection)
{
...
TryUpdateModel(editItem,新的String [] {Message_Type});
...
}
如何不过,我想显示的文本值代替数值:
的Index.aspx:
&LT; TD&GT;
&LT;%= Html.En code(item.Message_Type)%GT;
&LT; / TD&GT;
我怎样才能得到对应于item.Message_type?
元素的文本值更新:
消息类型如下:
公共静态的IEnumerable&LT; SelectListItem&GT; MessageTypeList
{
得到
{
返回新的[] {
新SelectListItem的{text =TEXT值1,值=1},
新SelectListItem的{text =TEXT值2,值=2},
新SelectListItem的{text =TEXT值3,值=3}
};
}}
这似乎是工作 - 不知道这是否是最好的解决办法还是不虽然。
而不是:
&LT; TD&GT;
&LT;%= Html.En code(item.Message_Type)%GT;
&LT; / TD&GT;
我得到的文本值:
&LT; TD&GT;
&LT;%= Html.En code(MessageTypes.MessageTypeList.Single(富=方式&gt; foo.Value == item.Message_Type.ToString())文本)%GT;
&LT; / TD&GT;
I have a table with a constraint on one field - it can be 1, 2 or 3. (The correct solution to this is probably to create a lookup table for this, but for now I'm wondering if it's possible to do this without the lookup table.)
I've created a class that returns an IEnumerable for the values. I'm using LINQ to Entities, and would like to be able to display the text value in a col. when listing all the entities.
The code for create/edit looks like:
Controller.cs:
ViewData["Message_Types"] = MessageTypes.MessageTypeList;
edit.aspx:
<%= Html.DropDownList("Message_Type",(IEnumerable<SelectListItem>)ViewData["Message_Types"]) %>
and the default model binding works just fine using TryModelUpdate:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection form)
{
...
TryUpdateModel(editItem, new string[] { "Message_Type" });
...
}
How However, I'd like to display the text value instead of the numeric value:
index.aspx:
<td>
<%= Html.Encode(item.Message_Type) %>
</td>
How can I get the text value of the element that corresponds to the item.Message_type?
Update:
The message types look like:
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" }
};
}
}
This seems to work - not sure if it's the best solution or not though.
Instead of:
<td>
<%= Html.Encode(item.Message_Type) %>
</td>
I get the text value from:
<td>
<%= Html.Encode(MessageTypes.MessageTypeList.Single(foo => foo.Value == item.Message_Type.ToString()).Text)%>
</td>
这篇关于asp.net的MVC和LINQ to实体:如何将自IEnumerable&LT文本值; SelectListItem&GT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!