在MVC视图中为HTML DropDownList创建标签和值

时间:2012-05-15 15:55:07

标签: c# html asp.net-mvc c#-4.0 razor

我有以下内容,它将“IT”和“HR”作为模型中的值发布。我希望IT和HR作为标签,0和1作为控制器的值。

@Html.DropDownList("DepartmentId", new SelectList(new[] { "IT", "HR" }))

当我得到视图时,如何在下拉列表中使用模型中部门ID中的匹配值预先选择值。因此,如果某个项目的ID为人力资源,那么下拉列表应该已经选择了HR,然后一个人可以将其更改为IT,并且可以保存该选项。

任何帮助? 请注意我不想改变我的模型。

ANSWER 非常感谢 Terry Nederveld 给出了这个答案:

 @Html.DropDownList("DepartmentId", new SelectList(new[] { new KeyValuePair<string, int>("IT", 1), new KeyValuePair<string, int>("HR", 2) }, "Value", "Key", (Model.ServiceItem.DepartmentId.Equals(1) ? 1 : 2)))

3 个答案:

答案 0 :(得分:3)

假设您正在使用MVC3 / 4,最简单的方法是添加一个&#39;部门&#39;你的模特的财产。然后你可以在你的视图中执行此操作:

@Html.DropDownListFor(m => m.Department.DepartmentId, Model.Departments) 

您的模型看起来像这样:

public class ViewModel
{
    public List<SelectListItem> Departments
    {
        get;
        private set;
    }

    public Department Department { get; set; }


    public ViewModel()
    {
        Departments = new List<SelectListItem>();
        //Assume you'll be getting the list from db here?
        Departments .Add(new SelectListItem { Text = "HR", Value = "IdValueHere" });
        Departments .Add(new SelectListItem { Text = "IT", Value = "IdValueHere" });
    }
}

这需要选择正确的项目。

答案 1 :(得分:2)

David Masters的方法是我正常使用的方法。但是因为你不想改变模型。以下是一种可行的方法:

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

答案 2 :(得分:0)

请参阅eudaimos的回复(约50%的回复)here以获得解决方案