我是ASP.Net MVC的新手,因此一直遇到这个问题。 我已经完成了堆栈溢出搜索,并得到了一些旧的解决方案,并且几乎可以解决问题,但是在我看来,这并不是一个好的解决方案。 我在View中有以下内容:
@Html.DropDownListFor(m => m.ProjectTypeId, new SelectList(Model.Projects, "Id", "Name"), "Select Project", new { @class = "form-control" })
项目模型
public class Project
{
[Key]
public int Id { get; set; }
[DisplayName("Name")]
public string Name { get; set; }
[DisplayName("Description")]
public string Description { get; set; }
public int TaskRate { get; set; }
public DateTime CreatedOn { get; set; }
}
生成的视图是:
<select class="form-control" data-val="true" data-val-required="The Project Types field is required." id="ProjectTypeId" name="ProjectTypeId"><option value="">Select Project</option>
<option selected="selected" value="2">Tasks</option>
<option value="3">Search</option>
</select>
我希望元素也具有数据速率属性,例如:
<select class="form-control" data-val="true" data-val-required="The Project Types field is required." id="ProjectTypeId" name="ProjectTypeId"><option value="">Select Project</option>
<option selected="selected" value="2" data-rate="5">Tasks</option>
<option value="3" data-rate="6">Search</option>
</select>
我尝试过这种方式:
<select id="ProjectTypeId" name="ProjectTypeId" class="form-control" data-val="true" data-val-required="The Project Types field is required.">
<option value="">Select Project</option>
@foreach (var type in Model.Projects)
{
<option value="@type.Id" data-rate="@type.TaskRate"
selected="@((Model.ProjectTypeId == type.Id) ? "selected" : null)">
@type.Name
</option>
}
</select>
但是它与“选定项”属性太杂乱了,因为默认情况下不会选中它。
请问有更清洁的方法吗?
谢谢
答案 0 :(得分:0)
使用以下代码解决了该问题:
<select id="ProjectTypeDD" name="@Html.NameFor(x => x.ProjectTypeId)" class="form-control" data-val-required="The Project Types field is required.">
<option value="">Select Project</option>
@foreach (var project in Model.Projects)
{
<option value="@project.Id" data-rate="@project.TaskRate"
selected="@((Model.ProjectTypeId == project.Id) ? "selected" : null)">
@project.Name
</option>
}
</select>