asp.net的MVC和LINQ to实体:如何将自IEnumerable&LT文本值; SelectListItem> [英] asp.net mvc and linq to entities: how to include text value from IEnumerable<SelectListItem>

查看:215
本文介绍了asp.net的MVC和LINQ to实体:如何将自IEnumerable&LT文本值; SelectListItem>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有在一个字段约束的表 - 它可以是1,2或3(正确的解决方案,这可能是创建此查找表,但现在我不知道是否有可能做到这一点没有查找表)。

我已经创建了一个返回一个IEnumerable的值的类。我使用LINQ到实体,并希望能在一个山坳中显示的文本价值。列出所有实体时。

在code为创建/编辑如下:

Controller.cs:

 计算机[Message_Types] = MessageTypes.MessageTypeList;

edit.aspx:

 <%= Html.DropDownList(Message_Type(IEnumerable的< SelectListItem>)计算机[Message_Types])%GT;

和默认的模型绑定就好用TryModelUpdate作品:

 的[AcceptVerbs(HttpVerbs.Post)
公众的ActionResult编辑(INT ID,形式的FormCollection)
{
   ...
  TryUpdateModel(editItem,新的String [] {Message_Type});
   ...
}

如何不过,我想显示的文本值代替数值:

的Index.aspx:

 < TD>
    <%= Html.En code(item.Message_Type)%GT;
  < / TD>

我怎样才能得到对应于item.Message_type?

元素的文本值

更新:

消息类型如下:

 公共静态的IEnumerable< SelectListItem> MessageTypeList
{
  得到
  {
    返回新的[] {
      新SelectListItem的{text =TEXT值1,值=1},
      新SelectListItem的{text =TEXT值2,值=2},
      新SelectListItem的{text =TEXT值3,值=3}
    };
  }}


解决方案

这似乎是工作 - 不知道这是否是最好的解决办法还是不虽然。

而不是:

 < TD>
    <%= Html.En code(item.Message_Type)%GT;
  < / TD>

我得到的文本值:

 < TD>
    <%= Html.En code(MessageTypes.MessageTypeList.Single(富=方式> foo.Value == item.Message_Type.ToString())文本)%GT;
  < / TD>

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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆