C# 在MVC3中创建简单的下拉列表
我有一个文本框,用于输入职务角色的值。然而,这被限制为数据库端的特定数量的角色。因此,对我来说,使用只包含有效角色的dropdownlist更有意义。我正试图设置这个,但遇到了困难 我在视图中放置了以下代码:C# 在MVC3中创建简单的下拉列表,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我有一个文本框,用于输入职务角色的值。然而,这被限制为数据库端的特定数量的角色。因此,对我来说,使用只包含有效角色的dropdownlist更有意义。我正试图设置这个,但遇到了困难 我在视图中放置了以下代码: <p> @Html.LabelFor(m => m.Role) @Html.DropDownListFor(m=>m.Roles) @Html.ValidationMessageFor(m => m.Role) </p>
<p>
@Html.LabelFor(m => m.Role)
@Html.DropDownListFor(m=>m.Roles)
@Html.ValidationMessageFor(m => m.Role)
</p>
在我的模型中:
public List<string> Roles
{
get
{
return new {"Author","Underwriter" };
}
}
但这不会编译。你知道我做错了什么吗?为了创建一个下拉列表,你需要在视图模型上设置两个属性:一个标量属性,用于保存选定的值;另一个集合属性,用于包含要显示的可用项列表 因此,您总是从编写视图模型开始:
public class MyViewModel
{
[Required]
[DisplayName("Role")]
public string SelectedRole { get; set; }
public IEnumerable<SelectListItem> Roles
{
get
{
return new[]
{
new SelectListItem { Value = "Author", Text = "Author" },
new SelectListItem { Value = "Underwriter", Text = "Underwriter" }
};
}
}
}
最后是一个对应的强类型视图:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.SelectedRole)
@Html.DropDownListFor( m => m.SelectedRole, Model.Roles, "-- Role --")
@Html.ValidationMessageFor(m => m.SelectedRole)
<button type="submit">OK</button>
}
要创建下拉列表,视图模型上需要两个属性:一个是保存选定值的标量属性,另一个是包含要显示的可用项列表的集合属性 因此,您总是从编写视图模型开始:
public class MyViewModel
{
[Required]
[DisplayName("Role")]
public string SelectedRole { get; set; }
public IEnumerable<SelectListItem> Roles
{
get
{
return new[]
{
new SelectListItem { Value = "Author", Text = "Author" },
new SelectListItem { Value = "Underwriter", Text = "Underwriter" }
};
}
}
}
最后是一个对应的强类型视图:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.SelectedRole)
@Html.DropDownListFor( m => m.SelectedRole, Model.Roles, "-- Role --")
@Html.ValidationMessageFor(m => m.SelectedRole)
<button type="submit">OK</button>
}
将列表添加到creational语句中
public List<string> Roles
{
get
{
return new List<string> {"Author","Underwriter" };
}
}
将列表添加到creational语句中
public List<string> Roles
{
get
{
return new List<string> {"Author","Underwriter" };
}
}
我希望.Net框架能够通过调用IEnumerable result={myT,myT2}来创建IEnumerable;而不必编写IEnumerable result=new T[]{myT,myT2}。如果对象属于同一类型,则该类型甚至可以推断为var友好型;而不必编写IEnumerable result=new T[]{myT,myT2}。如果对象属于同一类型,则该类型甚至可以推断为var-friendly。