Создание выпадающего списка из вашего контроллера или модели представления - PullRequest
4 голосов
/ 12 июля 2011

Как мне создать SelectList в моем контроллере и передать его в мой вид?Мне нужно указать для параметра "- Выбрать -" значение 0.

Я отвечаю на ответы, полученные от Джереми из 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.

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

В вашей модели измените 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);
0 голосов
/ 12 июля 2011

Один из способов, с помощью которых я видел это, - создать объект для переноса идентификатора и значения раскрывающегося элемента, например 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-помощник:

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--"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...