在 DropDownListFor 上设置选定的值

问题描述

我正在尝试根据控制器设置的内容设置组合框的选定值。

我的 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
  }

当我尝试这个时,它再次复制“摘要”并选择它,所以我最终得到了重复的条目:

enter image description here

我做错了什么?谢谢!

解决方法

您的“详细信息”或“摘要”只是下拉列表的标题。例如,您可以将其更改为“选择”。但是如果您需要显示选定的项目:

你需要一个工具来创建一个 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")
  

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...