【问题标题】:ASP.Net MVC 3 ListBox Selected Items Collection NullASP.Net MVC 3 ListBox Selected Items Collection Null
【发布时间】:2011-08-28 06:21:09
【问题描述】:

我有一个非常简单的场景,我确定我只是遗漏了一些明显的东西。我正在尝试使用 ListBox 来获取多个 Id 并将它们添加到我的模型中,但无论我做什么,集合始终为空。代码如下:

模型集合:

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 });
        }

【问题讨论】:

  • 你的控制器是什么样子的?
  • 更新显示控制器代码。

标签: asp.net asp.net-mvc-3 listbox


【解决方案1】:

好的,您已绑定到 SelectedTravelBuddies。呈现您的列表时,它的名称是什么?这对我来说也是一个漫长的夜晚:) 想要确保它与模型匹配。您还确定列表在表单元素中以便发布吗?

【讨论】:

  • 呈现的列表名称和id为SelectedTravelBuddies,名称和id值正确。我的假设是绑定器会将 TravleBuddies 的选定值绑定到 SelectedTravelBuddies 集合。
  • 天哪。我应该在很久以前的一个晚上打电话给它。我的表单中没有那个 ListBox。多么菜鸟的错误。我知道这是显而易见的。现在工作得很好;)感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
  • 2017-01-17
  • 1970-01-01
相关资源
最近更新 更多