美好的一天,
我目前正在创建一个如下选择列表:
return new SelectList(db.RadioNetworks
.OrderBy(x => x.RepeaterName),
"NetworkIdentifier", "RepeaterName");
这使我能够使用“RepeaterName”填充下拉列表
如何将其更改为保持相同的键值,但我想要一个复合数据字段。
所以喜欢
return new SelectList(db.RadioNetworks
.OrderBy(x => x.RepeaterName),
"NetworkIdentifier", "RepeaterName"+" - " + "startCode");
我该怎么做?
即使我必须遍历无线电网络列表并手动构建选择列表。
答案 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打败了我。而他的匿名课程版本更容易看到。