Asp.net mvc 3 MVC3下拉列表-字符串/角色值

Asp.net mvc 3 MVC3下拉列表-字符串/角色值,asp.net-mvc-3,drop-down-menu,Asp.net Mvc 3,Drop Down Menu,好的,这是我的挑战: 我想在我的注册视图中创建一个包含三个字符串的下拉列表——“请选择”、“我是客户”和“我是供应商”。当用户选择“我是客户机”并提交时,他将被添加到“客户机”角色。当用户选择“我是供应商”角色时,他将被添加到“供应商”角色中。如果用户未选择其中一个选项,而选择“请选择”,则会发生验证 我可以通过ViewBag直接填充角色。以下是方法: Register.cshtml- <div class="editor-label"> @H

好的,这是我的挑战: 我想在我的注册视图中创建一个包含三个字符串的下拉列表——“请选择”、“我是客户”和“我是供应商”。当用户选择“我是客户机”并提交时,他将被添加到“客户机”角色。当用户选择“我是供应商”角色时,他将被添加到“供应商”角色中。如果用户未选择其中一个选项,而选择“请选择”,则会发生验证

我可以通过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>


AccountController.cs-

    public ActionResult Register()
    {

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


我还需要完成什么- 目前,dropdownlist仅填充实际角色。这不是我想要的

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


我对这件事毫不在意,我会感谢任何能帮我解决这件事的人。谢谢。

类似于以下内容的功能将非常有效:

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")

编辑:字符串是引用类型,默认为空。

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


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

Dude您是炸弹数字游戏!!!!!!!你不知道我为这件事挣扎了多少周。老兄,我会投票支持你,但我有一个米斯利10级…哈哈。再次,非常感谢@很高兴我能帮上忙:)嗯,我也要试试这个。
@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")
    ViewBag.Roles = new SelectList(Roles.GetAllRoles().ToList(), "Id", "Name");