DropDownList в MVC5

1

Как заполнить данные в выпадающем списке из базы данных в С# MVC5 с использованием кода First.

Это то, что я пробовал:

Модель:

 public class EventBooking
{
    [Key]
    public int EventId { get; set; }
    [Required(ErrorMessage = "Enter your full name ")]
    public string FullName { get; set; }

    [Required(ErrorMessage = "Enter your phone number ")]
    [DataType(DataType.PhoneNumber)]
    public string PhoneNumber { get; set; }

    [Required(ErrorMessage = "Enter your email address ")]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    [Required(ErrorMessage = "Specify your event start date ")]
    [DataType(DataType.Date)]
    public DateTime StartDate { get; set; }

    [Required(ErrorMessage = "Specify your event end date ")]
    [DataType(DataType.Date)]
    public DateTime EndDate { get; set; }

    //[Required(ErrorMessage = "Select your event")]
    public string EventType { get; set; }


    public string EventDescription { get; set; }

    [Required(ErrorMessage = "Specify the number of your event attendees ")]
    public int NumberOfAttendes { get; set; }
}

контроллер:

 public ActionResult Create([Bind(Include="EventId,FullName,PhoneNumber,Email,StartDate,EndDate,EventType,EventDescription,NumberOfAttendes")] EventBooking eventBooking)

    {
        if (ModelState.IsValid)
        {
            db.EventBooking.Add(eventBooking);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(eventBooking);
    }

Посмотреть:

 <div class="form-group">
    @Html.LabelFor(model => model.EventType, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EventType, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EventType, "", new { @class = "text-danger" })
            </div>
        </div>

Я не могу изменить вид вида Events в Drop Down. кто может помочь.

  • 0
    Извините, я не понимаю вашего вопроса. Не могли бы вы уточнить?
  • 0
    Вот ссылка на аналогичный вопрос и предлагаемое решение: stackoverflow.com/questions/10484774/dropdown-in-mvc По сути, MVC отображает текстовое поле, потому что все, что вы передаете - это строковое свойство, а не список значений.
Показать ещё 2 комментария
Теги:
asp.net-mvc-5
drop-down-menu

3 ответа

1

Чтобы связать DropDownList в MVC5, выполните следующие действия:

Просмотреть код

@model DepenInjectionINMVC5App.Controllers.DemoController.EventBooking
    @{
        ViewBag.Title = "CreateDDL";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>CreateDDL</h2>


    <div>
        @Html.LabelFor(Model => Model.Id, "Event", new { @class = "control-label" })
        @Html.DropDownListFor(Model => Model.Id, new SelectList(ViewBag.EventList, "Id", "Name"))
    </div>

Код контроллера

public class EventBooking
{
    public int Id { get; set; }
    public string Name { get; set; }
}


public ActionResult CreateDDL()
{
    var eventList = new List<EventBooking>();
    EventBooking eventItem;
    var eventArr = new string[] { "Event-1", "Event-2", "Event-3", "Event-4", "Event-5", "Event-6", "Event-7" };
    for (int index = 0; index < eventArr.Length; index++)
    {
        eventItem = new EventBooking();
        eventItem.Id = index + 1;
        eventItem.Name = eventArr[index];
        eventList.Add(eventItem);
    }
    ViewBag.EventList = eventList;

    return View();
}
1

Я видел несколько разных способов заполнения выпадающих списков данными, но способ, которым я в конечном итоге это делаю, обычно сводится к тому, что вы получаете свои "типы событий" в свой собственный список и отправляете их обратно в представление вместе с моделью. Действие по умолчанию для scaffolded использует ViewBag, но вы можете создать свой собственный ViewModel или привязать к списку с метаданными..

Я предполагаю, что вы имеете в виду действие Get, а не Post?

контроллер:

// GET: /Create
public ActionResult Create()
    {
        EventBookingViewModel eventBookingViewModel = new EventBookingViewModel
        {
            EventTypes = new SelectList(methodToReturnAListToHere(), "ValueColumn", "DisplayColumn")
        };
        return View(eventBookingViewModel);
    }

Посмотреть:

<div class="col-md-9">
     @Html.DropDownListFor(model => model.EventType, Model.EventTypes, new { @class = "form-control" })
     @Html.ValidationMessageFor(model => model.EventType)
</div>

В DropDownListFor первым параметром является тот, который вы хотите сохранить выбранное значение, а второй - это SelectList, к которому вы хотите привязать.

0

вы хотите заполнить список событий? Попробуйте что-то вроде этого, возможно, это может сработать для вас

          <tr>
            <td>Event type</td>
            <td>
                <select @Html.EditorFor(model => model.EventType)>
                    <option>//enter you list of items you want to display here</option>   
                </select>
                    @Html.ValidationMessageFor(model => model.EventType, "", new { @class = "text-danger" })
            </td>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню