Показывать значение вместо идентификатора в Create View с помощью SelectList в Asp.Net Core - PullRequest
0 голосов
/ 29 июня 2019

Я работаю над приложением Asp.Net Core. У меня есть 4 таблицы, которые связаны между собой.

Город, улица, дом и сигнализация.

Приложение для управления установками сигнализации.

Дом принадлежит улице и городу. Они связаны между собой. Дом имеет атрибут DoorNr ...

Когда я пытаюсь создать новую установку будильника. Он показывает мне дома, которые у меня есть по Id, но мне нужно, чтобы показать полный адрес. проблема в том, что у класса дома есть только StreetId (от Street Class) и DoorNr. Как мне сделать так, чтобы он показывал полный адрес?

            public partial class AlarmInstall
            {
                public int AlarmInstallId { get; set; }
                public int HouseId { get; set; }
                public string Model { get; set; }

                public virtual House House { get; set; }
            }

            public partial class House
            {
                public House()
                {
                    AlarmInstall = new HashSet<AlarmInstall>();
                }

                public int HouseId { get; set; }
                public int StreetId { get; set; }
                public string DoorNr { get; set; }
                public int CityId { get; set; }

                public virtual City City { get; set; }
                public virtual Street Street { get; set; }
                public virtual ICollection<AlarmInstall> AlarmInstall { get; set; }
            }

            public partial class Street
            {
                public Street()
                {
                    House = new HashSet<House>();
                }

                public int StreetId { get; set; }
                public string StreetName { get; set; }

                public virtual ICollection<House> House { get; set; }
            }

            public partial class City
            {
                public City()
                {
                    House = new HashSet<House>();
                }

                public int CityId { get; set; }
                public string CityName { get; set; }

                public virtual ICollection<House> House { get; set; }
            }

Мой AlarmsInstallController имеет следующий код:

            // GET: AlarmInstalls/Create
            public IActionResult Create()
            {
                ViewData["HouseId"] = new SelectList(_context.House, "HouseId", "HouseId");
                return View();
            }

            // POST: AlarmInstalls/Create

            [HttpPost]
            [ValidateAntiForgeryToken]
            public async Task<IActionResult> Create([Bind("AlarmInstallId,HouseId,Model")] AlarmInstall alarmInstall)
            {
                if (ModelState.IsValid)
                {
                    _context.Add(alarmInstall);
                    await _context.SaveChangesAsync();
                    return RedirectToAction(nameof(Index));
                }
                ViewData["HouseId"] = new SelectList(_context.House, "HouseId", "DoorNr", alarmInstall.HouseId);
                return View(alarmInstall);
            }

И мой вид имеет следующий код:

            <form asp-action="Create">
                <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                <div class="form-group">
                    <label asp-for="HouseId" class="control-label"></label>
                    <select asp-for="HouseId" class ="form-control" asp-items="ViewBag.HouseId"></select>
                </div>

Это мой список выбора для HouseId ...

            ViewData["HouseId"] = new SelectList(_context.House, "HouseId", "HouseId");

Мне нужно показать полный адрес, составленный из streetName (из StreetClass) и DoorNr, а не HouseId, что я должен изменить в своем коде?

Заранее спасибо за любую помощь !!!

1 Ответ

0 голосов
/ 29 июня 2019

Решите это самостоятельно с помощью Google ...

    public IActionResult Create()
    {
        //   ViewData["HouseId"] = new SelectList(_context.House, "HouseId", "HouseId");

        var fullAddress = _context.House
                            .Select(h => new { HouseId = h.HouseId, FullAddress = h.Street.StreetName
                           + ", " + h.DoorNr })
                            .ToList();

        ViewBag.HouseId = new SelectList(fullAddress, "HouseId", "FullAddress");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...