MVC3下拉列表 - 字符串/角色值

时间:2011-08-09 17:46:59

标签: asp.net-mvc-3 drop-down-menu

好的,这是我的挑战: 我想在我的注册视图中创建一个包含三个字符串的下拉列表 - “请选择”,“我是客户”,“我是供应商”。当用户选择“我是客户”并提交时,他将被添加到“客户”角色。当用户选择“我是供应商”角色时,他将被添加到“供应商”角色中。如果用户未选择任何一个并离开“请选择”验证。

我可以通过ViewBag直接填充角色。这是如何做:

Register.cshtml -

        <div class="editor-label">
            @Html.LabelFor(m => m.Role, "I am a:")
        </div>
        <div class="editor-field">
            @Html.DropDownList("Role", ViewBag.Roles as SelectList,"Please Select")
        </div>



AccountModel.cs -

public class RegisterModel
{

    [Required]
    [Display(Name = "Role")]
    public string Role { get; set; }



AccountController.cs -

    public ActionResult Register()
    {

        ViewBag.Roles = new SelectList(Roles.GetAllRoles().ToList());
        return View();



我还需要做些什么 - 目前,下拉列表仅填充实际角色。这不是我想要的。

如何在我的注册视图中创建三个字符串的下拉列表 - “请选择”,“我是客户”和“我是供应商”。

我没有留下任何头发,并会感谢任何能帮我解决这个问题的人。感谢。

2 个答案:

答案 0 :(得分:6)

类似下面的东西可以完美地运作:

public class RegisterModel
{

    [Required]
    [Display(Name = "Role")]
    public string Role { get; set; }

然后你可以在视图中找到类似的内容。

@Html.DropDownListFor(x => x.Role, new[] {
new SelectListItem() {Text = "I am a vendor", Value = "Vendor"},
new SelectListItem() {Text = "I am a client", Value = "Client"}
}, "Pick a basket")

编辑:字符串是一种引用类型,默认情况下可以为空。

答案 1 :(得分:0)

您可以在构造函数中设置列表值:SelectList(dataObjects, valueField, textField)

    ViewBag.Roles = new SelectList(Roles.GetAllRoles().ToList(), "Id", "Name");

这允许您定义Role对象的哪些属性被设置为选项的值和文本。