ASP.Net MVC 3列表框选定的项目收集空
我有一个非常简单的场景,我敢肯定我只是缺少一些明显的东西。我试图使用ListBox来获取多个Id并将它们添加到我的模型中,但无论我做什么,该集合都始终为null。下面的代码:ASP.Net MVC 3列表框选定的项目收集空
模型集合:
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 });
}
好了,所以你绑定到SelectedTravelBuddies。当你的列表被渲染时,它的名字是什么?对我来说这是一个漫长的夜晚:)想要确保它与模型相匹配。你也确定列表是在表单元素中,因此它们被发布?
呈现的列表名称和ID是SelectedTravelBuddies,名称和ID值是正确的。我的假设是活页夹会将选定的TravleBuddies值绑定到SelectedTravelBuddies集合。 –
哦,伙计。很久以前我应该称它为一个夜晚。我在表单中没有那个ListBox。什么菜鸟的错误。我知道这是明显的。现在工作得很好;)感谢您的帮助。 –
你的控制器是什么样子? –
已更新,以显示控制器代码。 –