以下代码工作正常,我在许多视图中使用这种绑定方法,所以我试图转换为静态函数。以下是我的尝试。有人可以帮我强调如何做到这一点吗?
@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;
}
答案 0 :(得分:0)
此代码看起来不对:
@Html.DropDownListFor(model => model.CardExpiryYear,
IEnumerable < SelectListItem > vmConstants.listExpiryYearTest)
你有一个返回选择列表的方法,所以插入方法调用作为传递给DropDownListFor()
的第二个参数:
@Html.DropDownListFor( model => model.CardExpiryYear,
vmConstants.listExpiryYearTest() )
这假设您有一个名为“vmConstants”的类,其中包含一个名为“listExpiryYearYest”的静态方法。
附注:考虑使用标准的c#naming conventions,它将类和方法名称大写。
答案 1 :(得分:0)
@Html.DropDownListFor(m => m.CardYearExpiry, (IEnumerable<SelectListItem>) ViewBag.CardYearExpiry, null)
当我需要一个绑定到IEnumerable的下拉列表时,这就是我通常这样做的方式。 ViewBag只是我在C#中声明的新选择列表,而视图正在渲染(例如下面的例子)。
ViewBag.CardYearExpiry = item.Select(s => new SelectListItem
{
Value = s.Id,
Text = s.Name
}).OrderBy(o => o.Text);