Razor DropDownListFor SelectList, как связать неисчислимые селекты или как это сделать?

1

После работы кода отлично, я использую этот метод привязки во многих представлениях, поэтому я пытаюсь преобразовать его в статическую функцию. следующие мои попытки. может кто-нибудь помочь мне выделить, как это сделать?

@Html.DropDownListFor(model => model.CardExpiryYear, new SelectList(
    new[] { new { Text = "- -", Value = (string)null } }.Concat(
    Enumerable.Range(DateTime.Now.Year, 10)
    .Select(r => new
    {
        Text = r.ToString(),
        Value = r.ToString()
    })),
    "Value", "Text")
)

Последовали мои попытки:

@Html.DropDownListFor(model => model.CardExpiryYear, IEnumerable < SelectListItem > vmConstants.listExpiryYearTest)

public static SelectList listExpiryYearTest()
        {
            var listExpYears = new SelectList(
                        new[] { new { Text = "- -", Value = (string)null } }.Concat(
                        Enumerable.Range(DateTime.Now.Year, 10)
                        .Select(r => new
                        {
                            Text = r.ToString(),
                            Value = r.ToString()
                        })),
                        "Value", "Text");
            return listExpiryYears; 
        }
Теги:
razor

2 ответа

0
Лучший ответ

Этот код выглядит неправильно:

@Html.DropDownListFor(model => model.CardExpiryYear, 
    IEnumerable < SelectListItem > vmConstants.listExpiryYearTest)

У вас есть метод, который возвращает список выбора, поэтому вставьте вызов метода в качестве второго аргумента, переданного DropDownListFor():

@Html.DropDownListFor( model => model.CardExpiryYear, 
    vmConstants.listExpiryYearTest() )

Это предполагает, что у вас есть класс с именем "vmConstants" со статическим методом "listExpiryYearYest".

Примечание: рассмотрите стандартные соглашения о присвоении имен С#, в которых используются имена классов и методов.

0
@Html.DropDownListFor(m => m.CardYearExpiry, (IEnumerable<SelectListItem>) ViewBag.CardYearExpiry,  null)

Так я обычно делаю это, когда мне нужно привязку dropdownlist к IEnumerable. ViewBag - это просто новый список выбора, который я объявил в С#, пока рендеринг представления (пример ниже).

ViewBag.CardYearExpiry = item.Select(s => new SelectListItem
{
  Value = s.Id,
  Text = s.Name
}).OrderBy(o => o.Text);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню