如何在控制器中创建SelectList并将其传递给我的视图?我需要给“ - 选择 - ”选项赋值为0。
我正在回复replies that I got from Jeremey of Fluent Validation。
这就是我现在拥有的。我的观点模型:
[Validator(typeof(CreateCategoryViewModelValidator))]
public class CreateCategoryViewModel
{
public CreateCategoryViewModel()
{
IsActive = true;
}
public string Name { get; set; }
public string Description { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
public bool IsActive { get; set; }
public IList<Category> ParentCategories { get; set; }
public int ParentCategoryId { get; set; }
}
我的控制器。
public ActionResult Create()
{
List<Category> parentCategoriesList = categoryService.GetParentCategories();
CreateCategoryViewModel createCategoryViewModel = new CreateCategoryViewModel
{
ParentCategories = parentCategoriesList
};
return View(createCategoryViewModel);
}
这就是我的看法:
@Html.DropDownListFor(x => x.ParentCategoryId, new SelectList(Model.ParentCategories, "Id", "Name", Model.ParentCategoryId), "-- Select --")
如何在控制器或视图模型中创建下拉列表并将其传递给视图?我需要“ - 选择 - ”选项,其值为0.
答案 0 :(得分:3)
在您的模型中,将IList<Category>
更改为SelectList
,然后将其实例化为此...
List<ParentCategory> parentCategories = categoryService.GetParentCategories();
parentCategories.Insert(0, new ParentCategory(){ Id = "0", Name = "--Select--"});
ParentCategories = new SelectList(parentCategories, "Id", "Name");
然后在您的视图中,您只需致电
@Html.DropDownListFor(m => m.ParentCategoryId, Model.ParentCategories);
答案 1 :(得分:0)
我看到它完成的一种方法是创建一个对象来包装下拉项的id和值,如List<SelectValue>
,并将它在ViewModel中传递给视图,然后使用HTML帮助者构建下拉列表。
public class SelectValue
{
/// <summary>
/// Id of the dropdown value
/// </summary>
public int Id { get; set; }
/// <summary>
/// Display string for the Dropdown
/// </summary>
public string DropdownValue { get; set; }
}
以下是视图模型:
public class TestViewModel
{
public List<SelectValue> DropDownValues {get; set;}
}
以下是HTML Helper:
public static SelectList CreateSelectListWithSelectOption(this HtmlHelper helper, List<SelectValue> options, string selectedValue)
{
var values = (from option in options
select new { Id = option.Id.ToString(), Value = option.DropdownValue }).ToList();
values.Insert(0, new { Id = 0, Value = "--Select--" });
return new SelectList(values, "Id", "Value", selectedValue);
}
然后在你看来你打电话给帮助者:
@Html.DropDownList("DropDownListName", Html.CreateSelectListWithSelect(Model.DropDownValues, "--Select--"))