ASP MVC DropDownList不从列表中选择值

时间:2015-01-22 21:16:54

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我有这样的观点:

@{
    var jobTitles = new List<string>
    {
        "Title1",
        "Title2",
        "Title3",
    };
    var titlesList = new SelectList(jobTitles, Model.Title);
}

现在titlesList是一个SelectList,它包含Model中的选定值。我调试了这个并确保它是正确的。

然后在同一视图中,我有以下剃刀:

@Html.DropDownListFor(model => model.Title, titlesList, "Select an option", new { @class = "form-control", @required = "required" })

当我的视图在这种情况下呈现时,下拉列表中的选定选项是“选择一个选项”。我调试了列表,所选的值确实是内存中正确的值,但是DropDownListFor没有显示它。

编辑:

我在另一个EditorTemplate上使用同样的原理(如果它有效):

var types = new List<string>
{
    "Set Up",
    "Show Start",
    "Break Down"
};
@Html.DropDownListFor(model => model.TimeSlotTask, new SelectList(types), "Select an option", new { @class = "form-control", @required = "required" })

我意识到在这两个示例中,SelectList的初始化方式不同,但我在每个示例中都尝试了两种方式,并且它在第一个示例中不起作用。

就像我说的那样,我已经调试了Controller和Razor,我正在寻找的Model上的属性值被正确设置,并且与SelectList绑定的列表中的值相同。

编辑#2(模板)

我的主视图包含以下代码段:

    <span id="addAttendeeButton" class="btn btn-success btn-sm"><i class="fa fa-plus"></i></span><span id="removeAttendeeButton" class="btn btn-danger btn-sm"><i class="fa fa-minus"></i></span>
    <ul id="attendees" style="list-style-type: none; margin: 0; padding: 0;">
        @Html.EditorFor(model => model.Attendees)
    </ul>

使用一些jQuery来处理向#attendees

添加新项目
        $("#addAttendeeButton").click(function() {
            var id = $('#attendees > li').length;
            $.get('@Url.Action("CreateAttendee")/' + id, function(data) {
                $('#attendees').append(data);
            });
        });
        $("#removeAttendeeButton").click(function() {
            $('#attendees li:last').remove();
        });

然后参加者的EditorTemplate是:

@{
    var jobTitles = new List<string>
    {
        "Account Manager",
        "Application Engineer",
        "Customer Care",
        "Sales Engineer",
        "Marketing Manager",
        "Product Manager",
        "Trade Show Coordinator",
    };
    var titlesList = new SelectList(jobTitles);
}

<li>
    @Html.HiddenFor(model => model.Id)

    <div class="form-group">
        <div class="col-md-4">
            <div class="input-group-lg">
                <label>Name</label>
                @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="col-md-4">
            <div class="input-group-lg">
                <label>Job Titless</label>
                @Html.DropDownListFor(model => model.Title, titlesList, "Select an option", new { @class = "form-control", @required = "required" })
                @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="col-md-4">
            <div class="input-group-lg">
                <label>Show Lead</label>
                @Html.CheckBoxFor(m => m.Lead, new { @class = "form-control" })
            </div>
        </div>
    </div>
</li>

问题是EditorTemplate中的DropDownListFor。当我加载现有实体时,它不会从模型中选择值。但是,当我简单地在Razor中使用foreach循环迭代“Attendees”集合时,Title属性被正确设置并正确显示(只需使用a来显示它)。

所以我知道它正在从下拉列表中正确设置并保存到模型中,但是当重新渲染编辑视图时,如果存在下拉列表,则在指向模型的下拉列表中未选择该值。 / p>

0 个答案:

没有答案