更改选择列表中的值c#

时间:2014-09-09 11:32:34

标签: c# asp.net-mvc selectlist

美好的一天,

我目前正在创建一个如下选择列表:

  return new SelectList(db.RadioNetworks
                          .OrderBy(x => x.RepeaterName), 
                          "NetworkIdentifier", "RepeaterName");

这使我能够使用“RepeaterName”填充下拉列表

如何将其更改为保持相同的键值,但我想要一个复合数据字段。

所以喜欢

  return new SelectList(db.RadioNetworks
                          .OrderBy(x => x.RepeaterName), 
                          "NetworkIdentifier", "RepeaterName"+" - " + "startCode");

我该怎么做?

即使我必须遍历无线电网络列表并手动构建选择列表。

2 个答案:

答案 0 :(得分:3)

我假设startCode是你的radionetwork对象的一个​​属性,所以你可以用组合的信息创建一个新对象的集合,然后填充SelectList:

return new SelectList(db.RadioNetworks.OrderBy(x => x.RepeaterName)
                        .Select(x => new 
                        {
                            NetworkIdentifier = x.NetworkIdentifier,
                            Name = x.RepeaterName + " - " + x.startCode
                        }),
                     "NetworkIdentifier",
                     "Name");

答案 1 :(得分:2)

您可以尝试使用Wrapper,其中包括:

public class Wrapper
{
    RadioNetwork m_r;
    public Wrapper(RadioNetwork r) { m_r=r; }
    public object NetworkIdentifier { get { return m_r.NetworkIdentifier; }}
    public string Text { get { return m_r.RepeaterName.ToString()+"-"+m_r.startCode; }}
}

...
return new SelectList(db.RadioNetworks.OrderBy(x => x.RepeaterName).Select(x=>new Wrapper(x)), "NetworkIdentifier", "Text");

编辑:Manji打败了我。而他的匿名课程版本更容易看到。