我有以下内容,它将“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)))
答案 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以获得解决方案