Будет ли HTML-помощник DropDownList правильно работать с IList <SelectListItem>? - PullRequest
0 голосов
/ 29 декабря 2011

У меня проблемы с получением DropDownList для правильного выбора правильного значения и его отображения.

Я использую следующее:

@Html.DropDownListFor(x => Model.AdminSummaries[index].Status, AdminStatusReference.GetAdminStatusOptions(), new { id = string.Format("Status_{0}",index ) })

Это нормально, что AdminStatusReference.GetAdminStatusOptions () возвращает List или ДОЛЖЕН возвращать IEnumerable?

Ответы [ 3 ]

2 голосов
/ 29 декабря 2011

Модель:

public class MyViewModel
{
    public IList<AdminSummary> AdminSummaries { get; set; }
}

public class AdminSummary
{
    public string Status { get; set; }
}

public static class AdminStatusReference
{
    public static IEnumerable<SelectListItem> GetAdminStatusOptions()
    {
        return new[]
        {
            new SelectListItem { Value = "1", Text = "status 1" },
            new SelectListItem { Value = "2", Text = "status 2" },
            new SelectListItem { Value = "3", Text = "status 3" },
        };
    }
}

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            AdminSummaries = new[]
            {
                // preselect the first item
                new AdminSummary { Status = "1" },

                // preselect the second item
                new AdminSummary { Status = "2" },

                // nothing will be preselected because there is no xxx Value in the list
                new AdminSummary { Status = "xxx" },
            }.ToList()
        };
        return View(model);
    }
}

Вид:

@model MyViewModel
@for (int index = 0; index < Model.AdminSummaries.Count; index++)
{
    @Html.DropDownListFor(
        x => x.AdminSummaries[index].Status, 
        new SelectList(
            AdminStatusReference.GetAdminStatusOptions(),
            "Value",
            "Text",
            Model.AdminSummaries[index].Status
        )
    )
}
0 голосов
/ 29 декабря 2011

для использования

@Html.DropDownListFor<>

в своих проектах я всегда использовал IEnumerable<SelectListItem> в своем представлении, и поэтому перед рукой я установил, какой элемент имеет свойство «Выбрано» как истинное. Затем будет установлен элемент по умолчанию.

enter image description here

забыл, что могу отредактировать свой оригинальный ответ: P Вот HTML, представленный на моем проекте

0 голосов
/ 29 декабря 2011

Все будет хорошо.
List<T> реализует IEnumerable<T>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...