拉的SelectList从信息ViewBag:不创造价值=“...”在生成html(SelectLi

2019-10-17 23:18发布

我试图创建使用Razor视图引擎的MVC4应用程序客户端验证的下拉列表。

在视图中的代码来生成下拉列表如下:

 @Html.DropDownList("Test", new SelectList(ViewBag.AvailableLoBsDescriptions, ViewBag.AvailableLoBsIds), "--none--")

需要注意的是ViewBag.AvailableLoBsDescriptions在使用一个IList同时ViewBag.AvailableLoBsIds也使用一个IList控制器创建控制器创建。

我希望发生的是有剃刀产生一个下拉菜单,说明填充每个内部HTML,而IDS填充值=“...”。 不过,对于价值产生可言,导致这样的事情什么:

<select id="Test" name="Test"><option value="">--none--</option>
<option>N/A</option>
<option>aaaa</option>
<option>bbbb</option>
<option>cccc</option>
<option>dddd</option>
<option>eeee</option>
<option>ffff</option>
</select>

纵观选择列表的文档, http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist%28v=vs.108%29.aspx ,在我看来,这应该工作。 有没有人有,为什么没有被超过的占位符以外的任何生成的值的想法?

谢谢!

Answer 1:

您正在使用类似下面的构造函数:

SelectList(IEnumerable, Object)

这里的第二个参数决定从集合中的第一个参数当前选定的对象。 它并没有规定一个对象作为值的列表中使用。

什么,你应该做的是使用SelectList(IEnumerable, String, String) 。 这使您可以通过(每个元素的属性的名称IEnumerable ),以用于描述和一个值。 然后,您可以产生这样的事情:

控制器:

// Create your IEnumerable
var LoBs = new List<LoB>();

// Assign some parameters to your objects
var exampleItem = new LoB();
exampleItem.Description = "Option text";
exampleItem.Value = "myValue";

// Populate your list and return your view.
LoBs.Add(exampleItem);
ViewBag.LoBs = LoBs;
return View();

视图:

@Html.DropDownList("Test",
    new SelectList(ViewBag.LoBs, "Value", "Description"),
    "--none--")

瞧...

<select id="Test" name="Test">
    <option value="">--none--</option>
    <option value="myValue">Option text</option>
</select>


文章来源: SelectList pulling info from ViewBag: not creating value=“…” in generated html