#asp.net-mvc
Вопрос:
Я пытаюсь создать выпадающий список из базы данных, в котором есть 2 значения (почтовый индекс и город). В моей таблице у меня есть только «Почтовый индекс» и «Город», что означает, что у меня нет идентификатора, и до сих пор я использовал свой почтовый индекс в качестве идентификатора.
Я хочу, чтобы в раскрывающемся списке отображалось «Выберите город».
- Нью-Йорк 10001
- Нью-Йорк 10010
- Лос-Анджелес 90001
- и т.д.
Но сейчас это проявляется только так:
- НЬЮ-ЙОРК
- НЬЮ-ЙОРК
- Лос-Анджелес
Так что, если есть два Нью-Йорка, то вы не знаете, какой из них выбрать, так как нет почтового индекса. Я мог бы изменить, чтобы я показывал только почтовые индексы, а не города, и это работает, но я хочу показать и то, и другое.
В моих клиентах.cs у меня есть это:
public partial class Customers { public int CustomerId { get; set; } public string Name { get; set; } public string Address { get; set; } public string ZipCode { get; set; } public virtual Cities Cities { get; set; } }
В моих городах.cs у меня есть это:
public partial class Cities { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public Cities() { this.Customer = new HashSetlt;Customersgt;(); } public string ZipCode { get; set; } public string City { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollectionlt;Customersgt; Customer { get; set; } }
В моем файле create.cshtml у меня есть это:
lt;div class="form-group"gt; @Html.LabelFor(model =gt; model.ZipCode, "Cities", htmlAttributes: new { @class = "control-label col-md-2" }) lt;div class="col-md-10"gt; @Html.DropDownList("ZipCode", null, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model =gt; model.ZipCode, "", new { @class = "text-danger" }) lt;/divgt; lt;/divgt;
В контроллере это выглядит так:
public ActionResult Create() { ViewBag.ZipCode = new SelectList(db.Cities, "ZipCode", "City"); return View(); }
Как я могу это изменить? Я застрял..
Ответ №1:
Попробуй:
ViewBag.ZipCode = db.Cities.Select(c =gt; new SelectListItem { Value = c.ZipCode, Text = $"{c.City} {c.ZipCode}", });
Комментарии:
1. Ах, потрясающе, спасибо!! Это сработало 🙂