Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 SelectList不';不显示所选项目_Asp.net Mvc 3 - Fatal编程技术网

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中更好的诊断工具可以避免很多心痛:)