Выпадающий список не показывает выбранное значение в режиме редактирования в mvc 2

Привет, я пытаюсь отобразить значение базы данных в раскрывающемся списке в разделе редактирования, но в раскрывающемся списке показано значение по умолчанию, установленное ниже, это мой код: Контроллер:

 public ActionResult Edit(int id)
    {
       // Product helmet = new Product();//
        //Product garrage = new Product();

        ViewBag.mode = "edit";
        // for dropdown track
        ITrackRepository trackResp = new TrackRepository();
        IQueryable<Object> tracks = trackResp.GetVenuesSelectlist();
        ViewData["Venue"] = new SelectList(tracks, "VenueID", "Name");

        // for dropdown for event type
        ITrackdayRepository trackdayResp = new TrackdayRepository();
        IQueryable<EventType> eventTypes = trackdayResp.GetAllEventTypes();
        ViewData["EventTypes"] = new SelectList(eventTypes, "ID", "Name");

        // for dropdown experience
        IExperienceLevelRepository expLevelResp = new ExperienceLevelRepository();
        IQueryable<ExperienceLevel> expLevel = expLevelResp.GetAllExperienceLevels().OrderBy(ExperienceLevel => ExperienceLevel.Name);
        ViewData["Experience"] = new SelectList(expLevel, "ID", "Name");

        // dropdown for helmets
        IProductRepository prodResp = new ProductRepository();
        Product productQuantity = prodResp.GetProd(id);

        if (productQuantity.ProductTypeID == 1)
        {
            // dropdown for attendees
            var attendees = Enumerable.Range(1, 80).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
            ViewData["attendees1"] = new SelectList(attendees, "Value", "Text",**productQuantity.QtyAvailable)**; //productQuantity.QtyAvailable is the value from db(selected value of dropdown)

            ViewData["txtAttendees"] = productQuantity.UnitCost;
        }


        else
        {
            var emptyattendees = Enumerable.Range(1, 80).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
            ViewData["attendees1"] = new SelectList(emptyattendees.ToList(), "Value", "Text");


        }    Event trackday = trackdayResp.GetEvent(id); //returns all the values from event table whose eventid is id

        //need to return product quantity, value to drop downlist
       return View("Create", trackday);

    }

Просмотр отредактированных (РАБОТАЮЩИХ):

  <% if (ViewBag.mode != "edit")
                  { %>

                <%: Html.DropDownList("attendees1", ViewData["attendees1"] as SelectList, "--select--")%>
               <%}else{%>
               <%: Html.DropDownList("attendees1")%>
               <%} %>

person Mr A    schedule 23.06.2011    source источник


Ответы (1)


У меня была такая же проблема месяц назад, и я решил ее, выполнив следующие действия:

ViewData["attendees1"] = new SelectList(attendees, "Value", "Text", productQuantity.QtyAvailable);

Я имею в виду, что вам нужно добавить 4-й параметр с SelectedValue, который вы берете из исходного значения перед редактированием. Вы должны сделать это только в действии «Редактировать», нет необходимости делать это в «Создать», так как это новый объект, и значение еще не выбрано.

И в вашей разметке вы определяете DropDownList следующим образом:

<%: Html.DropDownList("attendees1") %>

Таким образом, выбранное значение будет выбрано вместо значения по умолчанию.

Надеюсь, это поможет.

EDIT:
Создать метод действия:

ViewData["attendees1"] = new SelectList(attendees, "Value", "Text");

Изменить метод действия:

ViewData["attendees1"] = new SelectList(attendees, "Value", "Text", productQuantity.QtyAvailable);

Разметка в режимах создания и редактирования

<%: Html.DropDownList("attendees1") %>
person Ken D    schedule 23.06.2011
comment
спасибо за ваш ответ, но если я удалю это, я не смогу отобразить его в разделе создания, потому что я использую одно и то же для создания и редактирования. - person Mr A; 23.06.2011
comment
отредактированный код отлично работает, спасибо за ваши предложения. Хотя он не отвечает на вопрос, но дал мне мысль, которая решает мою проблему... :) - person Mr A; 23.06.2011
comment
@Awais рассмотрите возможность использования строго типизированных помощников - person Muhammad Adeel Zahid; 23.06.2011
comment
ну, я нахожусь в центре всего, поэтому не могу перейти к представлению модели пользовательского типа, но, безусловно, в следующем проекте будет работать с сильным типом, поскольку это упрощает жизнь. обновление редактирования :) - person Mr A; 23.06.2011