ASP.Net MVC 3 ListBox Коллекция выбранных элементов Null - PullRequest
0 голосов
/ 28 августа 2011

У меня довольно простой сценарий, и я уверен, что я просто упускаю что-то очевидное.Я пытаюсь использовать ListBox, чтобы получить несколько идентификаторов и добавить их в мою модель, но независимо от того, что я делаю, коллекция всегда пуста.Вот код:

Коллекции моделей:

public IEnumerable<Model.UserProfile> TravelBuddies { get; set; }
        public IEnumerable<int> SelectedTravelBuddies { get; set; }

Я заполняю коллекцию TravelBuddies в моем контроллере.

Код вида:

<div class="module_content">
@if (Model.TravelBuddies.Count() > 0)
{
    @Html.ListBoxFor(m => m.SelectedTravelBuddies, new MultiSelectList(Model.TravelBuddies, "Id", "FullName"))
}
else
{
    <span>You don't currently have any travel buddies (people who were with you on this trip). Don't worry, you can add some to this trip later if you'd like.</span>
}
</div>

Список выбора заполняется на мой взгляд.Нет проблем там.Но как только я выбираю несколько элементов и отправляю свою форму, коллекция Model.SelectedTravelBuddies всегда становится пустой.Я что-то упускаю из виду?Это была долгая ночь кодирования.

Обновление: добавлен код контроллера

[HttpGet]
        public ActionResult New()
        {
            Model.Trip trip = new Model.Trip();
            ITripService tripService = _container.Resolve<ITripService>();
            IUserAccountService userService = _container.Resolve<IUserAccountService>();

            int userProfileId = userService.GetUserProfile((Guid)Membership.GetUser().ProviderUserKey).Id;

            trip.TripTypes = new SelectList(tripService.GetTripTypes(), "Id", "Name");
            trip.TravelBuddies = userService.GetTravelBuddies(userProfileId);

            tripService.KillFlightLegTempStorage();

            return View(trip);
        }

        [HttpPost]
        public ActionResult New([Bind(Exclude = "TripTypes")] Model.Trip trip)
        {
            ITripService tripService = _container.Resolve<ITripService>();
            if (!ModelState.IsValid)
            {
                tripService.KillFlightLegTempStorage();
                return View(trip);
            }

            int tripId = tripService.CreateTrip(trip, (Guid)Membership.GetUser().ProviderUserKey);
            tripService.KillFlightLegTempStorage();

            return RedirectToAction("Details", "Trip", new { id = tripId });
        }

1 Ответ

0 голосов
/ 28 августа 2011

Хорошо, значит, вы привязаны к SelectedTravelBuddies.Когда ваш список отображается, как он называется?Это была длинная ночь и для меня :) хочу убедиться, что она соответствует модели.Также вы уверены, что список находится в элементе формы, поэтому они размещены?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...