2017-07-25 117 views
1

我正在使用复选框从列表中选择最多11个足球运动员。他们根据他们的演奏位置分开并命名。如何在JavaScript中将复选框的值从MVC中传递给控制器​​?

@if(item.PlayerPosition.FantasyFootball_PlayerToSeason.Select(x => x.PositionID == 1).FirstOrDefault()) { 
    @Html.CheckBox("goalkeepers", false) 
} 

@if(item.PlayerPosition.FantasyFootball_PlayerToSeason.Select(x => x.PositionID == 2).FirstOrDefault()) { 
    @Html.CheckBox("defenders", false) 
} 

@if(item.PlayerPosition.FantasyFootball_PlayerToSeason.Select(x => x.PositionID == 3).FirstOrDefault()) { 
    @Html.CheckBox("midfielders", false) 
} 

@if(item.PlayerPosition.FantasyFootball_PlayerToSeason.Select(x => x.PositionID == 4).FirstOrDefault()) { 
    @Html.CheckBox("forwards", false) 
} 

我正在使用下面的一段JavaScript按钮在点击按钮时弹出框中按顺序显示每个选定的值。

$('#button').click(function() { 
    alert($('input[type="checkbox"]:checked').eq(0).val()); // 1st 
    alert($('input[type="checkbox"]:checked').eq(1).val()); // 2nd 
    alert($('input[type="checkbox"]:checked').eq(2).val()); // 3rd 
    alert($('input[type="checkbox"]:checked').eq(3).val()); // 4th 
    alert($('input[type="checkbox"]:checked').eq(4).val()); // 5th 
    alert($('input[type="checkbox"]:checked').eq(5).val()); // 6th 
    alert($('input[type="checkbox"]:checked').eq(6).val()); // 7th 
    alert($('input[type="checkbox"]:checked').eq(7).val()); // 8th 
    alert($('input[type="checkbox"]:checked').eq(8).val()); // 9th 
    alert($('input[type="checkbox"]:checked').eq(9).val()); // 10th 
    alert($('input[type="checkbox"]:checked').eq(10).val()); // 11th 
}); 

但是,我真正想用这些值做的事情是将它们传递给控制器​​,以便我可以将它们记录到数据库中。这些复选框放置在局部视图中,不属于此特定模型的一部分,这就是为什么它不那么直接(至少据我所知)。

基本上,一切工作,因为我想除了不能记录每个已选择的球员的ID。我在想,必须有一种方法来做到这一点 - 要么扩大我稍微做了些什么,要么采用不同的方法。

理想情况下,我想单独记录每个值,而不是数组。

这里是我的控制器中的提取物,我想这些值添加到我的表(目前注释掉):

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "FantasyTeamID,Id,FantasyTeamTypeID,Player1,Player2,Player3,Player4,Player5,Player6,Player7,Player8,Player9,Player10,Player11,FirstEntered,LastUpdated,FormationID,GameweekID")] FantasyFootball_FantasyTeam fantasyfootball_fantasyteam) 
    { 

     if (ModelState.IsValid) 
     { 
     db.FantasyFootball_FantasyTeam.Add(fantasyfootball_fantasyteam); 
      fantasyfootball_fantasyteam.Id = User.Identity.GetUserId(); 
      fantasyfootball_fantasyteam.FantasyTeamTypeID = 1; 
      //fantasyfootball_fantasyteam.Player1 = 2398; 
      //fantasyfootball_fantasyteam.Player2 = 491; 
      //fantasyfootball_fantasyteam.Player3 = 850; 
      //fantasyfootball_fantasyteam.Player4 = 461; 
      //fantasyfootball_fantasyteam.Player5 = 2845; 
      //fantasyfootball_fantasyteam.Player6 = 482; 
      //fantasyfootball_fantasyteam.Player7 = 1028; 
      //fantasyfootball_fantasyteam.Player8 = 2516; 
      //fantasyfootball_fantasyteam.Player9 = 2586; 
      //fantasyfootball_fantasyteam.Player10 = 2230; 
      //fantasyfootball_fantasyteam.Player11 = 2893; 
      fantasyfootball_fantasyteam.FirstEntered = DateTime.Now; 
      fantasyfootball_fantasyteam.FormationID = 1; 
      fantasyfootball_fantasyteam.GameweekID = 47; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

回答

0

您将通过所有复选框值在数组中,并通过保存到控制器并逐一应用循环并将值存储在数据库中。

Array trans = new Array(); 
trans.push($('input[type="checkbox"]:checked').eq(0).val()); 

然后将相同的数组转换为MVC操作。

+0

谢谢您的回复,但我不太清楚所有事情应该如何组合在一起。什么需要去哪里?我已经添加了一些来自我的控制器的代码,可以帮助你解释这一点。非常感谢。 – blurtbasin

相关问题