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

你的控制器是什么样子? –

+0

已更新,以显示控制器代码。 –

好了,所以你绑定到SelectedTravelBuddies。当你的列表被渲染时,它的名字是什么?对我来说这是一个漫长的夜晚:)想要确保它与模型相匹配。你也确定列表是在表单元素中,因此它们被发布?

+0

呈现的列表名称和ID是SelectedTravelBuddies,名称和ID值是正确的。我的假设是活页夹会将选定的TravleBuddies值绑定到SelectedTravelBuddies集合。 –

+0

哦,伙计。很久以前我应该称它为一个夜晚。我在表单中没有那个ListBox。什么菜鸟的错误。我知道这是明显的。现在工作得很好;)感谢您的帮助。 –