我已经使用HTML助手在表单中实现了一个下拉列表,我为下拉列表提供了默认值。下拉列表使用viewModel填充。
这是我的DDl代码。
<div class="form-group">
@Html.LabelFor(m => m.Genre)
@Html.DropDownListFor(m => m.Genre, new SelectList(Model.Genres, "Id", "Name"), "Select a Genre", new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Genre)
</div>
表单的模型如下所示
public class GigFormViewModel
{
[Required]
public string Venue { get; set; }
[Required]
[FutureDate]
public string Date { get; set; }
[Required]
[ValidTime]
public string Time { get; set; }
[Required]
public byte Genre { get; set; }
public IEnumerable<Genre> Genres { get; set; }
public DateTime GetDateTime()
{
return DateTime.Parse(string.Format("{0} {1}", Date, Time));
}
}
现在,在控制器中,我正在填充DDl。
[Authorize]
public ActionResult Create()
{
var viewModel = new GigFormViewModel
{
Genres = _dbContext.Genres.ToList()
};
return View(viewModel);
}
这是流派模型
public class Genre
{
public byte Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
}
下面是下拉列表的HTML。
<div class="form-group">
<label for="Genre">Genre</label>
<select class="form-control" data-val="true" data-val-number="The
field Genre must be a number." data-val-required="The Genre field is
required." id="Genre" name="Genre">
<option value="">Select a Genre</option>
<option value="1">Jazz</option>
<option value="2">Blues</option>
<option value="3">Rock</option>
<option value="4">Country</option>
</select>
<span class="field-validation-valid" data-valmsg-for="Genre" data-
valmsg-replace="true"></span>
</div>
使用上面的代码,将填充DDl列表。但是,所选值未显示在DDL中,默认值也不显示。
我在这里做错什么了吗?