Asp.Net核心DropDownListFor-获取多个模型属性

时间:2020-07-01 06:27:19

标签: asp.net model-view-controller dropdownlistfor

我是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>

但是它与“选定项”属性太杂乱了,因为默认情况下不会选中它。

请问有更清洁的方法吗?

谢谢

1 个答案:

答案 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>