MVC下拉列表

我刚刚在MVC开始了一个项目。 我是MVC asp.net的新手。 我想添加一个下拉列表框,就像我以前在asp.net中添加一样。

代码在asp.net中为Dropdownlist框一瞥

       

我想以这种方式下拉列表框….意思是,现在我需要为此创建一个模型和控制器。 假设我已经有一个名为“Employee Entry Form”的视图,我只需要在该页面上添加一个下拉列表。 我不想为此下拉列表创建模型; 我只需要在这个页面上。

下拉列表的值应该在您现有的视图模型中:

 public class WhateverViewModel { // All of your current viewmodel fields here public string SelectedCity { get; set; } public Dictionary CityOptions { get; set; } } 

在控制器中使用您想要的任何值填充这些值(其中SelectedCity是您的数字ID),然后在您的视图中执行以下操作:

 @Html.DropDownListFor(m => m.SelectedCity, new SelectList(Model.CityOptions, "Key", "Value", Model.SelectedCity)) 

如果您的值永远不会更改,您可以将它们硬编码为视图模型的static成员,然后执行以下操作:

 @Html.DropDownListFor(m => m.SelectedCity, new SelectList(WhateverViewModel.CityOptions, "Key", "Value", Model.SelectedCity)) 

无论哪种方式,这都是此视图的数据,因此它属于您的视图模型。 如果您没有使用视图模型,则此视图直接绑定到域实体; 你应该使用它们,现在就像开始一样好。

您还可以使用另一种方法,即收集1个辅助类中的所有下拉列表,并返回每个具有静态函数的列表。

防爆。 下拉助手类

 namespace Asko.Web.Mvc.Infrastructure.Utils { public static class DropdownHelper { public static IEnumerable GetAllCategories() { var categories = category.GetAll(); return categories.Select(x => new SelectListItem { Text = x.categoryName, Value = x.categoryId.ToString()})); } } } 

在这里,您将在页面中使用它:

  Category:  
@Html.DropDownListFor(m => m.CategoryId, DropdownHelper.GetAllCategories())

如果您想避免使用模型,可以只使用ViewBag。 在你的行动中:

 ViewBag.DirectorId = new SelectList(ListOfItemsToAdd, "dataValueField", "dataTextField", movie.DirectorId); 

并在视图中:

 <%= Html.DropDownList("VariableNameToPost", ViewBag.DirectorId) //for asp.net view engine %> @Html.DropDownList("VariableNameToPost", ViewBag.DirectorId) // for razor view engine 

并且接受变量的动作将具有如下内容:

 public ActionResult theAction(string VariableNameToPost){...} 

参考文献的:

  • 选择列表
  • 下拉列表

如果要在视图上直接创建下拉列表而不管控制器和模型,则可以使用以下代码创建它

 @Html.DropDownList("Departments", new SelectList(new [] { new KeyValuePair( "IT", 0 ), new KeyValuePair( "HR", 1 )},"Value", "Key"))