C# 如何在MVC中使用DropDownList(组合列表)

C# 如何在MVC中使用DropDownList(组合列表),c#,html,css,asp.net-mvc,C#,Html,Css,Asp.net Mvc,我想在MVC应用程序中使用ComboBox,但Html.DropDownListFor没有提供所需的输出。我的控制器代码如下 public class Data_TableController : Controller { public ActionResult ListIndex() { List<SelectListItem> listSelectListItems = new List<SelectListItem>();

我想在MVC应用程序中使用ComboBox,但Html.DropDownListFor没有提供所需的输出。我的控制器代码如下

public class Data_TableController : Controller
{
    public ActionResult ListIndex()
    {
        List<SelectListItem> listSelectListItems = new List<SelectListItem>();
        SelectListItem selectList = new SelectListItem()
        {
            Text = "DD",
            Value = "1"
        };
        listSelectListItems.Add(selectList);
        selectList = new SelectListItem()
        {
            Text = "XX",
            Value = "2"
        };
        listSelectListItems.Add(selectList);
        CitiesViewModel citiesViewModel = new CitiesViewModel()
        {
            Cities = listSelectListItems
        };

        return View(citiesViewModel);
    }
  }
public class CitiesViewModel
{
    public IEnumerable<string> SelectedCities { get; set; }
    public IEnumerable<SelectListItem> Cities { get; set; }
}
公共类数据\u table控制器:控制器
{
公共行动结果列表索引()
{
List SelectListItems=新建列表();
SelectListItem selectList=新建SelectListItem()
{
Text=“DD”,
Value=“1”
};
listSelectListItems.Add(选择列表);
selectList=新建SelectListItem()
{
Text=“XX”,
Value=“2”
};
listSelectListItems.Add(选择列表);
CitiesViewModel CitiesViewModel=新的CitiesViewModel()
{
Cities=listSelectListItems
};
返回视图(citiesViewModel);
}
}
ListIndex.cshtml代码是:

    @model MvcDemo.Models.CitiesViewModel
   @{
      ViewBag.Title = "ListIndex";
    }

    <div style=”font-family:Arial”>
    <h2>Index</h2>
    @using (Html.BeginForm())
    {
        @Html.DropDownListFor(m => m.SelectedCities, Model.Cities, new { size = Model.Cities.Count() })
        <br />
        <input type="submit" value=”Submit” />
}
</div>
@model MvcDemo.Models.CitiesViewModel
@{
ViewBag.Title=“ListIndex”;
}
指数
@使用(Html.BeginForm())
{
@DropDownListFor(m=>m.SelectedCities,Model.Cities,new{size=Model.Cities.Count()})

}
查看模型,如下所示

public class Data_TableController : Controller
{
    public ActionResult ListIndex()
    {
        List<SelectListItem> listSelectListItems = new List<SelectListItem>();
        SelectListItem selectList = new SelectListItem()
        {
            Text = "DD",
            Value = "1"
        };
        listSelectListItems.Add(selectList);
        selectList = new SelectListItem()
        {
            Text = "XX",
            Value = "2"
        };
        listSelectListItems.Add(selectList);
        CitiesViewModel citiesViewModel = new CitiesViewModel()
        {
            Cities = listSelectListItems
        };

        return View(citiesViewModel);
    }
  }
public class CitiesViewModel
{
    public IEnumerable<string> SelectedCities { get; set; }
    public IEnumerable<SelectListItem> Cities { get; set; }
}
公共类CitiesViewModel
{
公共IEnumerable SelectedCities{get;set;}
公共IEnumerable城市{get;set;}
}
但是HTML输出是纯列表框。我也想知道,如何在这里添加标签?附加我希望在组合框中的输出。

您正在通过添加以下内容来增加下拉列表的“显示大小”:

new { size = Model.Cities.Count() }
因此,删除它将使其成为一个元素的默认“显示大小”

要添加标签,我发现最好的方法如下:

在模型中,在属性上使用DisplayName属性:

[DisplayName("The City:")]
public string Cities { get; set; }
然后在视图中按如下方式显示:

@Html.LabelFor(m => m.Cities)
要为下拉列表/组合框提供样式,请执行以下操作,即使用新运算符:

@Html.DropDownListFor(m => m.SelectedCities, Model.Cities, new { id = "cities", style = "width:320px;color:red;background-color:blue;" })
编辑: 正如jbutler483所指出的,如果您希望使用css文件,可以通过以下方式实现样式化(但是,如果样式是一次性的,并且没有在站点中的其他地方使用,那么内联样式是最好的):


尝试删除新的{size=Model.Cities.Count(),谢谢Paul。现在它显示为组合框。有没有关于添加标签和格式(提供不同颜色)的想法?您无法设置输入类型中选项的格式
您在这里使用的术语有点快而松。组合框是一个控件,它将下拉列表与可编辑文本输入相结合,可以过滤所述列表或允许自由输入。实际上,没有本地HTML控件;它需要使用JavaScript和CSS来伪造外观和功能。但是,从您对Paul的回复来看,您实际上只是在寻找一个单一的select或true blue下拉列表,而不是一个组合框。谢谢Chris。我如何才能获得所选项目?我可以在控制器中使用formcollection,但由于DropDownList没有任何名称,因此我如何在控制器中引用它?我会我同意最后一行的所有内容,在这里你要设置内联样式。这可以很容易地编辑为
@class=…
,然后在你的css中应用样式选项。