Раскрывающийся список MVC3 - значение строки / роли - PullRequest
2 голосов
/ 09 августа 2011

Хорошо, вот моя задача: я хочу создать выпадающий список с тремя строками в моем представлении «Регистрация» - «Пожалуйста, выберите», «Я - клиент» и «Я - продавец».Когда пользователь выбирает «Я клиент» и отправляет его, он добавляется в роль «Клиент».Когда пользователь выбирает роль «Я продавец», он добавляется к роли «Продавец».Если пользователь не выбирает ни одного из них и оставляет «Пожалуйста, выберите», происходит проверка.

Я могу получить роли для непосредственного заполнения через 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 ]

6 голосов
/ 09 августа 2011

Нечто похожее на приведенное ниже будет работать идеально:

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

Редактировать: String является ссылочным типомобнуляется по умолчанию.

0 голосов
/ 09 августа 2011

Вы можете установить значения списка в конструкторе: SelectList(dataObjects, valueField, textField)

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

Это позволяет вам определить, какие атрибуты ваших объектов Role устанавливаются как значения и тексты опций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...