Asp.net mvc 3 SelectList不';不显示所选项目
这是减少了一点,但基本上我有一个模型,看起来像这样:Asp.net mvc 3 SelectList不';不显示所选项目,asp.net-mvc-3,Asp.net Mvc 3,这是减少了一点,但基本上我有一个模型,看起来像这样: public class PersonCreateEditViewModel { public string Title { get; set; } public IEnumerable<SelectListItem> Titles { get; set; } } @Html.DropDownListFor(model => model.Title, new SelectList(Model.Titles,
public class PersonCreateEditViewModel
{
public string Title { get; set; }
public IEnumerable<SelectListItem> Titles { get; set; }
}
@Html.DropDownListFor(model => model.Title, new SelectList(Model.Titles, "Value", "Text", Model.Title))
@{
ViewBag.Title = "Edit Person"
}
@{
ViewBag.Title = "Edit Person"
}
我通过检索一组字符串在我的操作中填充它:
IEnumerable<SelectList> titles = somelistoftitles.Select(
c => new SelectListItem
{
Value = c,
Text = c
};
var viewModel = new PersonCreateEditViewModel()
{
Title = model.Title,
Titles = sometitles
};
return View(viewModel);
这显然导致选择不起作用,因为我的模型也有“Title”属性。我通过重命名属性解决了问题。您需要在
SelectListItem
上设置Selected
属性
IEnumerable<SelectList> titles = somelistoftitles.Select(
c => new SelectListItem
{
Value = c,
Text = c,
Selected = (c.Equals(model.Title))
};
IEnumerable titles=somelistoftitles。选择(
c=>new SelectListItem
{
值=c,
Text=c,
选定=(c.Equals(model.Title))
};
已解决
正如我在问题末尾所写,这不是一件显而易见的事情。我只是碰巧有一个名为“Title”的ViewBag
条目,类似这样:
public class PersonCreateEditViewModel
{
public string Title { get; set; }
public IEnumerable<SelectListItem> Titles { get; set; }
}
@Html.DropDownListFor(model => model.Title, new SelectList(Model.Titles, "Value", "Text", Model.Title))
@{
ViewBag.Title = "Edit Person"
}
@{
ViewBag.Title = "Edit Person"
}
这显然导致选择不起作用,因为我的模型也有一个“Title”属性
今天早上在这个问题上浪费了太多时间
吸取的教训。谢谢,但是当我看到设置了
Selected
属性时,对于在控制器操作中匹配的SelectListItem
,我仍然看不到“Selected”属性。我一定是做错了什么。这很微妙。一个不同的选项可以很好地处理相同的代码。Kathunk是我的头撞在桌子上的声音。这很令人沮丧,我觉得MVC中更好的诊断工具可以避免很多心痛:)