Razor DropDownList对于SelectList,如何绑定不可分割的选择项或如何做到这一点
本文关键字:选择 不可分割 这一点 何做 绑定 SelectList 对于 DropDownList 何绑定 Razor | 更新日期: 2023-09-27 18:04:30
以下代码运行良好,我在许多视图中使用这种绑定方法,因此我试图转换为静态函数。以下是我的尝试。有人能帮我强调一下该怎么做吗?
@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"的静态方法。
附带说明:考虑使用标准的c#命名约定,该约定将类和方法名称大写。
@Html.DropDownListFor(m => m.CardYearExpiry, (IEnumerable<SelectListItem>) ViewBag.CardYearExpiry, null)
当我需要一个绑定到IEnumerable的dropdownlist时,我通常是这样做的。ViewBag只是我在C#中声明的一个新的选择列表,而视图正在渲染(下面的示例(。
ViewBag.CardYearExpiry = item.Select(s => new SelectListItem
{
Value = s.Id,
Text = s.Name
}).OrderBy(o => o.Text);