为dropdownlistfor(MVC)中的每个元素设置唯一id

Setting unique id for each element in a dropdownlistfor (MVC)

本文关键字:元素 设置 唯一 id dropdownlistfor MVC      更新时间:2023-09-26

我似乎不知道如何为SelectList中的每个元素设置一个唯一的ID(使用@Html.DropDownListFor)。视图中的div当前如下所示:

<div id="Courses">
    @Html.DropDownListFor(c => c.Courses, new SelectList(Model.Courses, "CourseID", "Name"), "Choose Course", new { id = "courseDropDown", @class = "form-control input-sm", data_width = "100%" })
</div>

在浏览器中检查元素会发现每个元素都有courseID作为值,我希望每个元素都将这个课程id作为唯一的id。仅供参考,Model.Courses包含我所有课程的枚举值。

为了完整起见,我想要这样做的原因是,我在与下拉列表相对应的部分视图中有一个highChart,我的课程页面上有一个按钮,它重定向到带有部分div的视图,并加载给定课程的图表(使用课程页面中的ID)。这很好,但我现在只需要dropdownlist在页面加载时显示该课程的名称,而现在它只是简单地说"选择网络钓鱼活动"

如有任何帮助或建议,我们将不胜感激。

edit:感谢您整理代码Rory

如果您需要设置select的默认值,您应该在控制器中设置模型的某种CourseId属性,然后在视图中设置:

@Html.DropDownListFor(c => c.CourseId, new SelectList(Model.Courses, "CourseID", "Name"), "Choose Course", new { id = "courseDropDown", @class = "form-control input-sm", data_width = "100%" })

DropDownListFor帮助程序设置页面加载时选择的此值。

在填充Course属性的Model或控制器中,将CourseId设置为唯一数字。

这对你设置房产的方式真的很重要吗?

foreach(var course in DataSource.CourseTitles)
   viewModel.Courses.Add(new Course(){ CourseId = i++, Name = course})

teo van kot的答案是正确的(+1)。

不过如果你不需要为帖子绑定CourseId的话。您可以使用SelectList构造函数:-

public SelectList(
    IEnumerable items,
    string dataValueField,
    string dataTextField,
    Object selectedValue
)

就像这样:-

<div id="Courses">
    @Html.DropDownListFor(c => c.Courses, new SelectList(Model.Courses, "CourseID", "Name", "COURSEID"), "Choose Course", new { id = "courseDropDown", @class = "form-control input-sm", data_width = "100%" })
</div>