Подтвердить что ты не робот

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>

Текстовые поля в том же виде имеют правильные значения. Это просто все выпадающие списки, которые этого не делают!

Большое спасибо за внимание.

4b9b3361

Ответ 1

Да. Похоже, что htmlhelper слишком много. Я удалил ссылки на модель, и все работает!

то есть.

 <%= Html.DropDownList("Parking", Model.Parking)%>

становится

 <%= Html.DropDownList("Parking")%>

и мы золотые. Это то, что ViewData содержит что-то, называемое "Парковка", потому что я ссылаюсь на него в модели, чтобы оно выдавало другое значение... или что-то...?

Ответ 2

Быстрый совет для людей - не называйте ни одного из свойств вашей модели "Заголовок", когда им нужен выпадающий список. Рамка будет смешана с View Title и не будет работать - я провел полный день, вырывая мои волосы из-за этого. Нужно спать на нем, чтобы понять, что происходит.