MVC Dropdownlistfor<>
本文关键字:gt Dropdownlistfor lt MVC | 更新日期: 2023-09-27 18:17:46
我刚开始在MVC项目。我是新的MVC。net。我想添加一个下拉列表框,就像我以前在asp.net中添加的那样。
下拉列表框在asp.net中的代码一览<asp:Dropdownlist ID="ddlCity" runat="server">
<asp:ItemList Text="Kolkatta" Value="1"/>
<asp:ItemList Text="New Delhi" Value="2"/>
<asp:ItemList Text="Mumbai" Value="3"/>
<asp:ItemList Text="chennai" Value="4"/>
<asp:ItemList Text="Hydrabad" Value="5"/>
</asp:Dropdownlist>
我想要一个下拉列表框以这种方式....也就是说,现在我需要为它创建一个模型和控制器。假设我已经有了一个名为"Employee Entry Form"的视图,并且我只需要在该页面上添加一个下拉列表。我不想为这个下拉列表创建一个模型;我只需要写在这一页。
下拉列表的值应该在现有的视图模型中:
public class WhateverViewModel
{
// All of your current viewmodel fields here
public string SelectedCity { get; set; }
public Dictionary<string, string> 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))
不管怎样,这是这个视图的数据,所以它属于你的视图模型。如果你不使用视图模型,这个视图直接绑定到一个领域实体;您应该使用它们,现在就是开始使用它们的好时机。
您还可以采用另一种方法,即将所有下拉列表收集到一个helper类中,并使用静态函数返回这些列表。
交货。下拉帮助类
namespace Asko.Web.Mvc.Infrastructure.Utils
{
public static class DropdownHelper
{
public static IEnumerable<SelectListItem> GetAllCategories()
{
var categories = category.GetAll();
return categories.Select(x => new SelectListItem { Text = x.categoryName, Value = x.categoryId.ToString()}));
}
}
}
这里你要在页面中使用它:
<td style="width: 150px;">
<b>Category: </b>
<br>
@Html.DropDownListFor(m => m.CategoryId, DropdownHelper.GetAllCategories())
</td>
如果您想避免使用model,您可以简单地使用ViewBag。在你的行动中:
ViewBag.DirectorId = new SelectList(ListOfItemsToAdd, "dataValueField", "dataTextField", movie.DirectorId);
和view:
<%= 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<string, int>( "IT", 0 ), new KeyValuePair<string, int>( "HR", 1 )},"Value", "Key"))