Как создать выпадающий список с записями в моей базе данных? - PullRequest
1 голос
/ 06 мая 2019

То, что я пытаюсь сделать, - это создать выпадающий список со всеми моими «Станциями» из базы данных и при выборе одного из них увеличить его на карте.Я только что создал контроллер AdminMapController с этим кодом:

    public class AdminMapController : Controller
    {
        private readonly ApplicationDbContext _context;

        public AdminMapController(ApplicationDbContext context)
        {
            _context = context;
        }
        public ActionResult GetListOfStations()
        {
            ViewBag.ListOfDropdown = _context.Stations.ToList();
            return View("~/Areas/Identity/Pages/Account/AdminMap.cshtml");
        }
        public JsonResult GetAllLocation()
        {
            var data = _context.Stations.ToList();
            return Json(data);
        }

и представлением (только выпадающий тест):

    </style>
    <br/><br/>
    <div>
        <select class="form-control">
            <option>--Select--</option>
            @foreach (var item in ViewBag.ListOfDropdown)
            {
                <option value ="@item.Id">@item.Name</option>
            }
        </select>
    </div>
    <br/>

Забавно, что метод GetAllLocation работает правильно, но GetListOfStations выдает мне ошибку NullReferenceException: Object reference not set to an instance of an object. с этими «проблемами»: @foreach (var item in ViewBag.ListOfDropdown) и ViewData["Title"] = "Admin Map";

Есть идеи, как мне это исправить?

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Я думаю, вы должны использовать это взамен. Действие:

var model = _context.Stations.ToList();
return View("~/Areas/Identity/Pages/Account/AdminMap.cshtml", model);

Просмотр:

@model List<Stations>
<div>
        <select class="form-control">
            <option>--Select--</option>
            @foreach (var item in Model)
            {
                <option value ="@item.Id">@item.Name</option>
            }
        </select>
    </div>
0 голосов
/ 07 мая 2019

Другой способ, если вы не хотите использовать модель в этом случае, это использовать вместо этого «ViewData»:

ViewData["Stations"] = _context.Stations.ToList();

А в представлении что-то вроде этого:

@foreach (var item in ViewData["Stations"] as IList<Stations>)

Но я все еще думаю, что модель более полезна в вашем случае. Используйте ViewData для дополнительной информации, которая не будет частью модели.

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