c# - 将属性添加到 MVC 选择列表
问题描述
我正在我的 MVC 应用程序中创建一个选择列表,并且需要复制用 HTML 编写的内容。
我有以下代码,它当前从模型中获取数据,并为模型中的每个项目生成包含选项的选择列表,包括 JobID 作为值,WebDescription 作为文本,并使用类别对下拉列表中的项目进行分类。
var basketDetails = new SelectList(items.basketJobCodes, "jobID", "WebDescription", "category", 1);
List<SelectListItem> basketItems = basketDetails.ToList();
basketItems.Insert(0, (new SelectListItem { Text = "-- Please pick an item for collection --", Value = "none", Selected = true }));
@Html.DropDownList("basket-item", basketItems, new { @id = "edit-basket-item", @class = "form-select"})
当前版本在每个名为 itemCat 的下拉项目上都有一个额外的属性,它给出了一个用于对每个项目进行分类的数字(见下文),但是我不知道如何将属性添加到我的选择列表并从模型中获取值正如我对 JobID、WebDescription 和类别所做的那样。
<optgroup label="1 for £10">
@foreach (var item in ViewBag.largeJobs)
{
<option value="@item.jobID" itemCat="@item.bags"@item.WebDescription</option>
}
</optgroup>
有任何想法吗?
解决方案
这是简单的解决方案。
使用 MVC4,您可以使用帮助器 HTML.NameFor和HTML.IdFor 获取表达式树上元素的 ID 和名称
<select name="@Html.NameFor(Function(model) model.jobId)"
id="@Html.IdFor(Function(model) model.jobId)">
@For Each item In ViewBag.largeJobs
@<option value="@item.jobID"
@(If(item.jobID = Model.CityId, "selected", ""))
itemCat="@item.bags">
@item.WebDescription
</option>
Next
</select>
推荐阅读
- c# - 如何将参数从控制器传递到 FormDialog 状态模型
- linux - Bash:在执行前高亮显示命令(set -x)
- rvest - 如何使用 rvest 分离 html_text 结果?
- image - 如何在 Flutter 中裁剪图像?
- javascript - 冒泡排序功能似乎不起作用
- android - Whatsapp、Facebook 和 Skype 消息如何在后台运行?
- javascript - Codeigniter 列的可数据总和
- r - 闪亮的sliderInput()内的过滤数据?
- mysql - MySQL:许多索引,但在小字段上
- haskell - 为什么`guarded False =失败"跳过"`类型检查?