如何在MVC中使用DropDownList(ComboList)

时间:2014-11-11 17:49:27

标签: c# html css asp.net-mvc

我想在我的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);
    }
  }

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>

查看模型如下

public class CitiesViewModel
{
    public IEnumerable<string> SelectedCities { get; set; }
    public IEnumerable<SelectListItem> Cities { get; set; }
}

但是HTML out是纯粹的列表框。另外我想知道,如何在这里添加标签?将我想要的输出附加到组合框中。 enter image description here

1 个答案:

答案 0 :(得分:0)

您正在增加显示尺寸&#39;您的下拉列表中添加:

new { size = Model.Cities.Count() }

因此删除它会使其成为默认显示尺寸&#39;一个元素。

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

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

[DisplayName("The City:")]
public string Cities { get; set; }

然后在您的“视图”中显示它:

@Html.LabelFor(m => m.Cities)

要给下拉列表/组合框一个样式执行类似下面的操作,即使用new运算符:

@Html.DropDownListFor(m => m.SelectedCities, Model.Cities, new { id = "cities", style = "width:320px;color:red;background-color:blue;" })

修改 正如jbutler483所指出的那样,如果您希望使用css文件,可以通过以下方式实现样式化(但如果样式是一次性的并且未在网站的其他地方使用,那么内联样式最好):

Html.DropDownListFor(..., new { @class = "myclassname" } );