C# 如何在MVC中使用DropDownList(组合列表)
我想在MVC应用程序中使用ComboBox,但Html.DropDownListFor没有提供所需的输出。我的控制器代码如下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>();
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中应用样式选项。