Могу ли я создать список выбора с помощью помощника MVC3

#asp.net-mvc

#asp.net-mvc

Вопрос:

Я новичок в MVC3. Я хотел бы создать список выбора / выпадающий список, который позволит мне выбирать между 2-3 вещами. Я только хочу иметь возможность выбирать из списка. Есть ли простой способ сделать это с помощью помощника.

Мэри Джин

Вот моя идея.

 The helper will select from choices:

1 answer
2 answers
3 answers
  

и сохранить результат в переменной task_type

Ответ №1:

Вы могли бы использовать DropDownListFor помощника. Я бы начал с определения модели представления:

 public class AnswersViewModel
{
    public string SelectedAnswer { get; set; }

    public IEnumerable<SelectListItem> Answers
    {
        get
        {
            return new[]
            {
                new SelectListItem { Value = "1", Text = "1 answer" },
                new SelectListItem { Value = "2", Text = "2 answers" },
                new SelectListItem { Value = "3", Text = "3 answers" },
            };
        }
    }
}
  

затем контроллер:

 public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new AnswersViewModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(AnswersViewModel model)
    {
        return View(model);
    }
}
  

и, наконец, строго типизированное представление:

 @model AnswersViewModel
@using (Html.BeginForm())
{
    @Html.DropDownListFor(
        x => x.SelectedAnswer,
        new SelectList(Model.Answers, "Value", "Text")
    )
    <input type="submit" value="OK" />
}
  

Теперь, когда пользователь отправляет форму, будет вызвано действие публикации индекса, и SelectedAnswer свойство модели представления будет автоматически заполнено пользовательским выбором из выпадающего списка.

Комментарии:

1. Вау, Дарин, твой ответ действительно хорош. Я могу многому у вас научиться. Большое спасибо!!

2. Один вопрос. В нем говорится, что не удалось найти SelectListItem. Нужно ли мне определять этот класс?

3. @MaryJean, нет, тебе нужно импортировать пространство имен, в котором определен этот класс: using System.Web.Mvc .