1

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

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

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

有什么帮助吗??请注意我不想改变我的模型。

回答 非常感谢 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)))
4

3 回答 3

3

假设您使用的是 MVC3/4,最简单的方法是在模型中添加“部门”属性。然后您可以在您的视图中执行此操作:

@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" });
    }
}

这负责选择正确的项目。

于 2012-05-15T16:08:40.613 回答
2

David Masters 方法是我通常使用的方法。但是由于您不想更改模型。这是一种可行的方法:

@Html.DropDownList("Departments", new SelectList(new [] { new KeyValuePair<string, int>( "IT", 0 ), new KeyValuePair<string, int>( "HR", 1 )},"Value", "Key")) 
于 2012-05-15T16:50:04.270 回答
0

在此处查看来自 eudaimos 的回复(大约 50% 的回复)以获得解决方案

于 2012-05-15T16:04:02.783 回答