问题描述
我正在尝试根据控制器设置的内容设置组合框的选定值。
我的 DropDownListFor:
@if (Model.FormType == "Detailed")
{
@Html.DropDownListFor(model => model.FormType,new SelectList(Enum.GetValues(typeof(FormType))),"Detailed")
}
else
{
@Html.DropDownListFor(model => model.FormType,"Summary")
}
我的 FormType 枚举:
public enum FormType
{
Summary,Detailed
}
当我尝试这个时,它再次复制“摘要”并选择它,所以我最终得到了重复的条目:
我做错了什么?谢谢!
解决方法
您的“详细信息”或“摘要”只是下拉列表的标题。例如,您可以将其更改为“选择”。但是如果您需要显示选定的项目:
你需要一个工具来创建一个 SelectList
public static SelectList GetSelectList(string selectedText)
{
Array values = Enum.GetValues(typeof(FormType));
List<SelectListItem> items = new List<SelectListItem>();
foreach (var i in values)
{
var item=new SelectListItem
{
Text = Enum.GetName(typeof(FormType),i),Value = i. ToString()
};
if(item.Text==selectedText) item.Selected=true;
items.Add(item);
}
return new SelectList(items);
}
将 SelectList 添加到您的视图模型:
public Model ()
{
..... your code
public SelectList SelectList {get; set;}
{
此后,您可以将此代码放入您的操作中
model.SelectList=GetSelectList(model.FormType);
最后是视图:
@Html.DropDownListFor(model => model.FormType,model.SelectList,"Select")