【问题标题】:Adding attributes to MVC Select List将属性添加到 MVC 选择列表
【发布时间】:2019-02-11 19:04:48
【问题描述】:

我正在我的 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>

有什么想法吗?

【问题讨论】:

  • 我的 google-fu 今天早上显然很糟糕,我知道这是重复的,我只是找不到它。有一个答案有一个自定义扩展选择列表/选择列表项,用于将数据属性添加到选项元素。长话短说,内置的 html 助手是不可能的,你必须自己写

标签: c# model-view-controller


【解决方案1】:

这是一个简单的解决方案。

使用 MVC4,您可以使用帮助器 HTML.NameForHTML.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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多