Mvc - выпадающий список не заполняется правильно в окне редактирования
Я создаю свое первое приложение MVC, следуя учебнику NerdDinner. Тем не менее, при создании выпадающего списка из SelectList я столкнулся с проблемой.
По какой-то причине, когда я открываю представление "Изменить", выпадающий список не показывает правильный выбор, даже если данные установлены в базе данных, а в представлении "Подробности" отображается правильное значение. Каждый из них просто подходит к первому значению в списке.
Я прошел через код NerdDinner по частям и не могу для меня видеть какую-либо разницу, но это приложение будет правильно отображать выпадающее меню с текущим значением при редактировании, а мое - нет.
У кого-нибудь есть предложение, откуда идти? Я могу опубликовать фрагменты кода, если кто-то спрашивает что-то конкретное.
Update:
В пределах набора полей:
<p>
<label for="Parking">Parking Arrangement:</label>
<%= Html.DropDownList("Parking", Model.Parking)%>
<%= Html.ValidationMessage("Parking", "*") %>
</p>
Действие "Редактировать":
//
// GET: /Buyer/Edit/2
public ActionResult Edit(int id)
{
Buyer_Profile buyer_profile = buyerRepository.GetBuyerProfileByID(id);
if (buyer_profile == null)
return View("NotFound");
else if (!buyer_profile.IsOwnedBy(User.Identity.Name, id))
return RedirectToAction("Index", "Home");
else
return View(new BuyerFormViewModel(buyer_profile));
}
Таким же образом они создают его для примера NerdDinner, я создал "... FormViewModel":
public class BuyerFormViewModel
{
// Properties
public Buyer_Profile Buyer_Profile { get; private set; }
public SelectList Parking { get; private set; }
// Constructor
public BuyerFormViewModel(Buyer_Profile buyer_profile)
{
Buyer_Profile = buyer_profile;
Parking = new SelectList(BuyerProfileOptions.Parking, Buyer_Profile.Parking);
}
}
И сгенерированный HTML при нажатии на "редактировать", когда значение уже отображается в представлении деталей и сохраняется в d/b:
<p>
<label for="Parking">Parking Arrangement:</label>
<select id="Parking" name="Parking"><option>No Preference</option>
<option>On Street</option>
<option>Assigned Street</option>
<option>Open Garage</option>
<option>Covered Garage</option>
</select>
</p>
Текстовые поля в том же виде имеют правильные значения. Это просто все выпадающие списки, которые этого не делают!
Большое спасибо за внимание.
Ответы
Ответ 1
Да. Похоже, что htmlhelper слишком много. Я удалил ссылки на модель, и все работает!
то есть.
<%= Html.DropDownList("Parking", Model.Parking)%>
становится
<%= Html.DropDownList("Parking")%>
и мы золотые. Это то, что ViewData содержит что-то, называемое "Парковка", потому что я ссылаюсь на него в модели, чтобы оно выдавало другое значение... или что-то...?
Ответ 2
Быстрый совет для людей - не называйте ни одного из свойств вашей модели "Заголовок", когда им нужен выпадающий список. Рамка будет смешана с View Title и не будет работать - я провел полный день, вырывая мои волосы из-за этого. Нужно спать на нем, чтобы понять, что происходит.