C# ASP MVC DropDownList用于不从列表中选择值

C# ASP MVC DropDownList用于不从列表中选择值,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,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); } 在这种情况下,当我的视图渲染时,下拉列表中的选定选项是选择一个选项。我已经调试了列表,所选的值确实是内存中正确的值,但是Drop

我有这样的看法:

@{
    var jobTitles = new List<string>
    {
        "Title1",
        "Title2",
        "Title3",
    };
    var titlesList = new SelectList(jobTitles, Model.Title);
}
在这种情况下,当我的视图渲染时,下拉列表中的选定选项是选择一个选项。我已经调试了列表,所选的值确实是内存中正确的值,但是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" })
那么与会者的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中的DropDownList for。加载现有实体时,它不会从模型中选择值。然而,当我在Razor中简单地使用foreach循环来迭代与会者集合时,Title属性被正确地设置和显示,只需使用一个函数来显示它


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

显示控制器,数据也不应出现在视图中控制器只从数据库中获取实体,正如我所说,设置了这个属性后,我对它进行了调试,设置正确,并将其传递给视图。此外,视图中的这些数据,无论是“标准”还是“非标准”数据,都不意味着这些数据不应该起作用。您确定property Title的值是这三个值之一吗?。请注意,它也可以是var titlesList=new SelectListjobTitles-SelectList的第二个参数无论如何都将被忽略100%正。但是,我确实有另一个下拉列表绑定到不同的列表,在同一页面上,使用不同的编辑器模板,在呈现视图时从下拉列表中正确选择值。razor中的列表设置与razor完全相同,并且使用DropDownList for绑定与razor完全相同。您提到了EditorTemplate-您是否在循环中执行某些操作?
    <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>
        $("#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();
        });
@{
    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>