После работы кода отлично, я использую этот метод привязки во многих представлениях, поэтому я пытаюсь преобразовать его в статическую функцию. следующие мои попытки. может кто-нибудь помочь мне выделить, как это сделать?
@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;
}
Этот код выглядит неправильно:
@Html.DropDownListFor(model => model.CardExpiryYear,
IEnumerable < SelectListItem > vmConstants.listExpiryYearTest)
У вас есть метод, который возвращает список выбора, поэтому вставьте вызов метода в качестве второго аргумента, переданного DropDownListFor()
:
@Html.DropDownListFor( model => model.CardExpiryYear,
vmConstants.listExpiryYearTest() )
Это предполагает, что у вас есть класс с именем "vmConstants" со статическим методом "listExpiryYearYest".
Примечание: рассмотрите стандартные соглашения о присвоении имен С#, в которых используются имена классов и методов.
@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);