MVC下拉列表<>

Sha*_*waz 4 c# asp.net asp.net-mvc asp.net-mvc-2

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*t P 37

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

public class WhateverViewModel
{
    // All of your current viewmodel fields here
    public string SelectedCity { get; set; }
    public Dictionary<string, string> CityOptions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

@Html.DropDownListFor(m => m.SelectedCity,
    new SelectList(Model.CityOptions, "Key", "Value", Model.SelectedCity))
Run Code Online (Sandbox Code Playgroud)

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

@Html.DropDownListFor(m => m.SelectedCity,
    new SelectList(WhateverViewModel.CityOptions, "Key", "Value", Model.SelectedCity))
Run Code Online (Sandbox Code Playgroud)

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


Bis*_*nna 7

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

防爆.下拉助手类

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()}));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

<td style="width: 150px;">
      <b>Category: </b>
      <br>
 @Html.DropDownListFor(m => m.CategoryId, DropdownHelper.GetAllCategories())
</td>
Run Code Online (Sandbox Code Playgroud)