Как заполнить данные в выпадающем списке из базы данных в С# 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. кто может помочь.
Чтобы связать 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();
}
Я видел несколько разных способов заполнения выпадающих списков данными, но способ, которым я в конечном итоге это делаю, обычно сводится к тому, что вы получаете свои "типы событий" в свой собственный список и отправляете их обратно в представление вместе с моделью. Действие по умолчанию для 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, к которому вы хотите привязать.
вы хотите заполнить список событий? Попробуйте что-то вроде этого, возможно, это может сработать для вас
<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>