我在剃须刀页面上有这个
@Html.DropDownListFor(
m => m.UserCulture, // eg: "United Kingdom (+44)"
Model.Countries.Select(m => new SelectListItem {
Text = m.Name + " (" + m.CallingCode + ")", // eg: "United Kingdom (+44)"
Value = m.CallingCode // eg: "+44"
}).ToList(),
Model.UserCulture // eg: "United Kingdom (+44)"
)
据我所知,DropDownListFor
的参数为:
我想避免使用#3(我不希望将项目添加到下拉菜单的顶部),而只是让下拉菜单预先选择m.UserCulture
指定的项目(或者,而是Model.UserCulture
。
简而言之,我的问题似乎是,预先选择一项(使用此标签助手)的唯一方法是,是否将该项目添加到带有第三个参数的下拉菜单的顶部。
答案 0 :(得分:0)
您实际上并没有使用标签助手。您正在使用经典MVC中的“旧” HTML帮助器方法。 ASP.NET Core中推荐的方法是实际使用select tag helper。 asp-items
属性采用SelectList
或SelectListItem
的集合。 asp-for
属性采用与所选值绑定的项目。您可以通过为所选值提供默认值来设置该值:
// PageModel properties
[BindProperty]
public string UserCulture { get; set; } = "United Kingdom (+44)";
public List<SelectListItem> Options { get; set; }
// instantiate in e.g. OnGet
Options = Model.Countries.Select(m => new SelectListItem {
Text = m.Name + " (" + m.CallingCode + ")", // eg: "United Kingdom (+44)"
Value = m.CallingCode // eg: "+44"
}).ToList()
<select asp-for="UserCulture" asp-items="Model.Options"></select>