MVC填充下拉列表
我用这个代码来填充下拉列表MVC填充下拉列表
ViewData["projectType"] = new SelectList
(_dataManager.Project.ProjectTypeList(), "Id", "Name");
,但如果我想使用一个不表列,但两个或多个列我必须这样做?例如
ViewData["projectType"] = new SelectList
(_dataManager.Project.ProjectTypeList(), "Id", "Name1"+"Name2");
只是一个属性添加到您的
模型
视图模型:
public partial class Project
{
public string FullName
{
get { return Name1 + Name2; }
}
}
,并使用这个属性:
ViewData["projectType"] = new SelectList(
_dataManager.Project.ProjectTypeList(),
"Id",
"FullName"
);
如果'FullName'仅用于演示文稿,则应该避免使用。 – 2010-03-14 19:41:15
这就是为什么应该使用ViewModel。 Model - > ViewModel - > View。 ViewModel就是你展现给View的东西,所以这样的属性是允许的。 – 2010-03-14 19:47:17
现在听起来好多了。 :) – 2010-03-14 20:14:11
你总是可以手动填写SelectList
。
喜欢的东西(我没有测试):
var list = new SelectList();
var data = _dataManager.Project.ProjectTypeList();
foreach (var d in data){
list.Add(new SelectListItem
(string.Format("{0} {1}",d.Name1,d.Name2), d.Id, isChecked));
}
ViewData["projectType"] = list;
你应该可以做类似的事情:
ViewData["service_lines"] = new SelectList
(repository.SubcontractService_Lines(), "Id", "Name");
在库:
public class SelectService_LineItem
{
public string Name { get; set; }
public Guid Id { get; set; }
}
public IEnumerable<SelectService_LineItem> SubcontractService_Lines()
{
return
from sl in db.service_lines
select new SelectService_LineItem
{
Name = sl.service_line_name + "" + sl.service_line_name2,
Id = sl.service_line_id
};
}
这里有一个类似的问题http://stackoverflow.com/questions/2319691/can-i-customise-my-data-text-field-in-an -mvc-selectlist-for-the-use-the -help/2319842#2319842 – uvita 2010-03-14 19:46:51