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

J0N*_*ER0 2 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>
Run Code Online (Sandbox Code Playgroud)



AccountModel.cs -

public class RegisterModel
{

    [Required]
    [Display(Name = "Role")]
    public string Role { get; set; }
Run Code Online (Sandbox Code Playgroud)



AccountController.cs -

    public ActionResult Register()
    {

        ViewBag.Roles = new SelectList(Roles.GetAllRoles().ToList());
        return View();
Run Code Online (Sandbox Code Playgroud)



我还需要完成的任务 - 目前,下拉列表仅填充实际角色.这不是我想要的.

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

我没有头发留在这一个,并将感谢任何能帮我解决这个问题的人.谢谢.

Fra*_*mas 6

类似于下面的东西将完美地工作:

public class RegisterModel
{

    [Required]
    [Display(Name = "Role")]
    public string Role { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的视图中找到类似的东西.

@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")
Run Code Online (Sandbox Code Playgroud)

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