在下拉列表中为(MVC)

时间:2016-05-10 08:54:08

标签: javascript c# jquery html razor

我似乎无法弄清楚如何为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作为值,我希望每个元素都将此courseID作为唯一ID。仅供参考Model.Courses包含我所有课程的数量。

为了完整起见,我想要的原因是我在局部视图中有一个对应于下拉列表的高图,我从我的课程页面有一个按钮,它重定向到视图,上面有部分div和加载给定课程的图表(使用coursepage中的ID)。这很好用,但我现在需要dropdownlist在页面加载时显示该课程的名称,而现在它只是说&#39;选择网络钓鱼活动&#39;

感谢任何帮助或建议。

编辑:感谢您整理代码Rory

3 个答案:

答案 0 :(得分:2)

如果您需要设置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帮助器设置在页面加载时选择此值。

答案 1 :(得分:1)

在模型或控制器中,您要填充Course属性,将CourseId设置为唯一编号。

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

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

答案 2 :(得分:1)

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

虽然你不需要将CourseId绑定到帖子上。您可以使用SelectList constructor: -

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>