
[英]Getting SelectListItems of MultiSelectList from SelectList
[英]Rendering issue using SelectList from manually defined SelectListItems in MVC 2
我正在使用ASP.NET MVC 2(.NET 3.5),需要手动定义什么是选项列表。 当我这样做时,我得到一个下拉菜单,每个手册条目读取'System.Web.Mvc.SelectListItem'。
我的视图模型定义了这样的列表:
public SelectList YesNoList
{
get
{
List<SelectListItem> tmpList = new List<SelectListItem>();
tmpList.Add(new SelectListItem {Text = "", Value = ""});
tmpList.Add(new SelectListItem {Text = "Yes", Value = "1"});
tmpList.Add(new SelectListItem {Text = "No", Value = "0"});
YesNoList = new SelectList(tmpList,"");
}
private set{}
}
在视图中,我使用Html.DropDownList引用它:
Html.DropDownList("FieldName", viewmodel.YesNoList);
我期望在最终网页上呈现的内容应该是:
<select id="FieldName" name="FieldName">
<option value=""/>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
相反,我得到:
<select id="FieldName" name="FieldName">
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
我很茫然,因为我无法弄清楚为什么返回类型所以如果有人能指出我对viewmodel定义有什么问题,或者指出更好的方法,我会很感激。 我对从C#类集合派生SelectList犹豫不决,因为SelectList将提供一种迭代方式来迭代值和显示文本。
在此先感谢,希望有人可以提供帮助。
干杯,
Ĵ
下拉列表也可以处理List<SelectListItem>
,只需发送它。
Html.DropDownList("FieldName", viewmodel.YesNoList);
和
public List<SelectListItem> YesNoList
{
get
{
List<SelectListItem> YesNoList = new List<SelectListItem>();
YesNoList.Add(new SelectListItem {Text = "", Value = ""});
YesNoList.Add(new SelectListItem {Text = "Yes", Value = "1"});
YesNoList.Add(new SelectListItem {Text = "No", Value = "0"});
return YesNoList;
}
private set{}
}
你在制作选择列表时实际上做错了。
它应该是:
new SelectList(tmpList, "Value", "Text");
然后忘记我上面的代码。 你可以用任何List做这个,如果你给它列表和值和文本“键”
您可以使用编辑器模板来完成。 称之为“YesNo”并包含以下代码......
@Modeltype Boolean
@Code
Dim YesNoList = New List(Of SelectListItem)()
YesNoList.Add(New SelectListItem() With {.Text = "Yes", .Value = True})
YesNoList.Add(New SelectListItem() With {.Text = "No", .Value = False})
Dim list = New SelectList(YesNoList, "Value", "Text", Model)
End Code
@Html.DropDownList("", list)
然后在您的模型中为您的属性分配一个“YesNo”UIHint。 这意味着现在EditorFor这个属性将为您提供一个很好的Yes / No列表,它将作为布尔值绑定。
试试这段代码:
OdbcDataReader iLRt1 = databaseFunctions.databaseConnection.getFromDatabaseReader("select * from groups order by head");
List<SelectListItem> Hello1 = new List<SelectListItem>();
Hello1.Add(new SelectListItem { Text = "Select All", Value = "Select All" });
while (iLRt1.Read())
{
Hello1.Add(new SelectListItem { Text = iLRt1["head"].ToString(), Value = iLRt1["code"].ToString() });}
ViewData["myList2"] = Hello1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.