【发布时间】:2015-06-05 10:28:18
【问题描述】:
通过网站搜索,我看到了这个问题的很多变体,但没有一个与这个特殊情况有关。
我正在尝试使用在我的模型中保存字符串的数组中的值index i 填充多个 DropDownLists。
我的模板与以下类似(简化):
@model foo
@for (int i = 0; i < Model.ArrayName.Length; i++ )
{
@Html.LabelFor(m => m.ArrayName[i], "Index " + i, new {})
@Html.DropDownListFor(m => m.ArrayName[i], Model.ListOfPotentialValues, new {})
@Html.ValidationMessageFor(m => m.ArrayName[i])
}
更清楚地说,ArrayName 是一个字符串数组 (string[]),ListOfPotentialValues 的类型是 IEnumerable<SelectListItem>
模型代码如下:
public IEnumerable<SelectListItem> ListOfPotentialValues
{
return SelectList(/* A list of Strings*/)
}
public string[] ArrayName { get; set; }
//Constructor
public foo()
{
ArrayName = new string[] {"Foo", "Foo", "Baz","Qux"};
}
视图为第一个下拉菜单发送以下 HTML 输出(这对所有下拉菜单都是一致的)
<div>
<label for="ArrayName_0_">Index 0</label>
<select id="ArrayName_0_" name="ArrayName[0]">
<option>Foo</option>
<option>Bar</option>
<option>Baz</option>
<option>Qux</option>
</select>
<span class="field-validation-valid" data-valmsg-for="ArrayName[0]" data-valmsg-replace="true"></span>
</div>
由此,您可能推导出 ArrayName 当然是包含我想要显示的值的数组的名称,而 ListOfPotentialValues 是可能选择的值的 SelectList ,也可能没有推导出来。值列表正在显示,但没有像我不使用数组那样设置它的值。
虽然没有填充下拉列表的值,但如果我在 MVC 模板中调用 @Model.ArrayName[i],我可以显示它的值。
更多细节:
如果ListOfPotentialValues 包含值Foo, Bar, Baz, Qux
而ArrayName 包含值Foo, Foo, Qux, Baz
我希望下拉列表以 Foo、Foo、Qux、Baz(分别)的值开始,同时仍然可以选择 Foo、Bar、Baz 和 Qux
我缺少什么简单的东西吗?
【问题讨论】:
-
ArrayName的类型是什么?ListOfPotentialValues?您能否提供正在输出的 HTML 示例? -
我相信这个编辑满足你的要求
标签: c# arrays asp.net-mvc