Выпадающий список в ASP.NET MVC 3

#.net #asp.net #asp.net-mvc #asp.net-mvc-3 #drop-down-menu

#.net #asp.net #asp.net-mvc #asp.net-mvc-3 #выпадающее меню

Вопрос:

 <div class="editor-label">
    @Html.LabelFor(model => model.Category)
</div>
<div class="editor-field">

    @Html.EditorFor(model => model.Category)
    @Html.ValidationMessageFor(model => model.Category)
</div>
  

Это дает мне метку и текстовое поле. Как я могу получить выпадающий список со статическими элементами выбора вместо текстового поля. Пожалуйста, помогите. Я новичок в ASP.NET MVC. Мне нужно решение / совет в синтаксисе Razor.

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

1. @marc_s : Я согласен. Мне потребовалось некоторое время, чтобы зарегистрироваться. Это не позволит мне проголосовать или принять ответ, пока я не зарегистрируюсь, а затем произошла ошибка сайта с OpenID. До сих пор мне не разрешали голосовать.

Ответ №1:

 @Html.DropDownListFor( model => model.Category, new SelectList(new [] {"cat1", "cat2", "cat3"}) );
  

Ответ №2:

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

Сначала просмотр

 @using Website.Models
@model PageWithSelectList
@{
    ViewBag.Title = "Index";
}
@Html.DropDownList("DayOfWeek", Model.DaysOfWeek)
  

Затем контроллер и метод действия

 using System.Web.Mvc;
using Website.Models;

namespace Website.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var model = new PageWithSelectList();
            model.DayOfWeek = 3;
            return View(model);
        }
    }
}
  

и вывод HTML

 <select id="DayOfWeek" name="DayOfWeek">
<option value="1">Sunday</option>
<option value="2">Monday</option>
<option selected="selected" value="3">Tuesday</option>
<option value="4">Wednesday</option>
<option value="5">Thursday</option>
<option value="6">Friday</option>
<option value="7">Saturday</option>
</select>
  

Я надеюсь, что это поможет.

Ответ №3:

Другой способ заполнить выпадающий список — использовать viewbag.

Контроллер:

 public Action Create()
{
   FillViewBag();
   Return View();
}

private void FillViewBag()
    {
        List<SelectListItem> selectOptions = new List<SelectListItem>();            
        for(int i = 1; i <= 3; i  )
        {
            SelectListItem sli = new SelectListItem();
            sli.Text = "Option "   i.ToString();
            sli.Value = i.ToString();
            selectOptions.Add(sli)
        }
        ViewBag.SelectOptions = selectOptions;
     }
  

На ваш взгляд:

  @Html.DropDownListFor(model => model.yourProp, ViewBag.SelectOptions as IEnumerable<SelectListItem>)
  

Надеюсь, это поможет вам!

Ответ №4:

Вы можете использовать код для ввода в заблуждение

Контроллер

 var list = new SelectList(new[]
                                          {
                                              new {ID="1",Name="Employee"},
                                              new{ID="2",Name="Debtor"},
                                              new{ID="3",Name="Supplier"},
                                               new{ID="4",Name="Patient"},
                                          },
                           "ID", "Name", 1);
                ViewData["list"] = list;

                return View();
  

Вид

 <div class="editor-field">

@Html.DropDownListFor(model => model.type,ViewData["list"] as SelectList,
 new { style = "width: 100px;"})

</div>