gpt4 book ai didi

asp.net - MVC SelectList 在文本字段中组合多列

转载 作者:行者123 更新时间:2023-12-03 01:17:20 24 4
gpt4 key购买 nike

如何生成一个选择列表,其中文本字段由两个或多个文本列组成,例如:我的数据库中有“描述”和“费率”字段,我想将它们组合起来显示:

Large--£200
Medium--£150
Small--£100

Controller 代码是:

 var stands = db.Stands.Where(s => s.ExhibitorID == null).ToList();
ViewBag.StandID = new SelectList(stands,"StandID", "Description" + "-- £" + "Rate");

...我的观点是(目前):

    <div class="editor-field"> 
@Html.DropDownList("StandID", "--Select--")
</div>

...但是“描述”+“-- £”+“价格”);不会运行:

DataBinding: 'System.Data.Entity.DynamicProxies.Stand_63F8C9F623B3C0E57D3008A57081AFCD9C39E1A6B79B0380B60840F1EFAE9DB4' does not contain a property with the name 'Description--£Rate'.

感谢您的帮助,

标记

最佳答案

您可以使用简单的 LINQ 投影创建一个新的匿名类,然后使用 SelectList(IEnumerable, string, string) constructor overload指定用于 <option> 的值和文本字段元素即:

var stands = 
db.Stands
.Where(s => s.ExhibitorID == null)
.Select(s => new
{
StandID = s.StandID,
Description = string.Format("{0}-- £{1}", s.Description, s.Rate)
})
.ToList();

ViewBag.StandID = new SelectList(stands, "StandID", "Description")

编辑

在 C#6 及更高版本中,string interpolationstring.Format 的阅读效果更好

   ...
Description = $"{s.Description}-- £{s.Rate}"

如果您计划强大的 ViewModel类名(而不是匿名类),您无疑会希望用 nameof 的安全性替换魔术字符串。运算符:

ViewBag.StandID = new SelectList(stands, nameof(Stand.StandID), nameof(Stand.Description));

关于asp.net - MVC SelectList 在文本字段中组合多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com