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>