我是MVC的新手。我试图建立一个小型网站,让人们在NFL比赛中挑选优胜者。我很困惑如何将用户在视图中选择的内容转换为数据库中的数据。我正在使用MVC 5和实体框架6.关于将单选按钮绑定到MVC模型的困惑
我希望列出每个游戏的视图,显示主队和客队。每个团队旁边都有一个单选按钮。用户选择每个选择旁边的单选按钮,然后单击提交按钮。对于每个游戏,我想读取已选择的两个单选按钮中的哪一个,然后将相关团队的名称写入Picks的数据库表中。数据库已经建好,我无法改变它。
所以我有一个模型的精选(id,week_number,game1,game2等)。我有一个Schedule的模型,这是本赛季所有的NFL比赛(id,week_number,game_number,home,away)。我有基本的控制器从脚手架出来,我试图创建一个ViewModel来结合我的视图需要的两个模型。
我不知道该怎么做是添加一个单选按钮,以便它与它旁边的团队名称绑定,这样当我提交它时将确定该按钮是否被选中,如果是,将该团队名称写入数据库。我应该为每个单选按钮制作32个布尔属性,然后如果它被选中,请在所有游戏列表中查找球队名称?这似乎应该容易得多,但我对整个MVC结构感到困惑。
此外,这是否应该发生在控制器,而不是视图模型?我如何访问选择哪个单选按钮?
UPDATE
我跟着建议,这里尽我所能,我很接近。但现在的问题是,页面上的所有单选按钮都在一个单选按钮组中 - 也就是说,只能选择一个按钮。我想让表中的每一行都是一个组,所以最终会有16个按钮被选中。以下是我使用的型号和视图:
public class GameViewModel
{
public string AwayTeam { get; set; }
public string HomeTeam { get; set; }
public string SelectedTeam { get; set; }
public GameViewModel()
{
AwayTeam = string.Empty;
HomeTeam = string.Empty;
SelectedTeam = string.Empty;
}
public GameViewModel(string away, string home)
{
AwayTeam = away;
HomeTeam = home;
SelectedTeam = string.Empty;
}
}
public class WeeklyPicksViewModel
{
private NFLEntities db = new NFLEntities();
public int MNFscore { get; set; }
public List<GameViewModel> WeeklySchedule { get; set; }
public int WeekNumber { get; set; }
public WeeklyPicksViewModel(List<schedule> weeklySchedule, int userid)
{
List<GameViewModel> week = new List<GameViewModel>();
foreach (var game in weeklySchedule)
{
GameViewModel g = new GameViewModel(game.away, game.home);
week.Add(g);
}
WeeklySchedule = week;
}
}
@model FootballPickEm.ViewModels.WeeklyPicksViewModel
<h2>Picks Page</h2>
<hr />
<div>
<table>
@foreach (var game in Model.WeeklySchedule) {
<tr>
<td>
@Html.RadioButtonFor(m => game.SelectedTeam, game.AwayTeam)
</td>
<td>
<img src="~/images/@(game.AwayTeam.ToLower()).gif" />
</td>
<td>
@Html.DisplayFor(m => game.AwayTeam)
</td>
<td>
AT
</td>
<td>
@Html.RadioButtonFor(m => game.SelectedTeam, game.HomeTeam)
</td>
<td>
<img src="~/images/@(game.HomeTeam.ToLower()).gif" />
</td>
<td>
@Html.DisplayFor(m => game.HomeTeam)
</td>
</tr>
}
</table>
</div>
'bool'属性不合适(通常与复选框一起使用)。你需要一个属性(说)'SelectedTeam'和2个单选按钮 - '@ Html.RadioButtonFor(m => m.SelectedTeam,Model.HomeTeam)'和'@ Html.RadioButtonFor(m => m.SelectedTeam,Model.AwayTeam )',当你提交时,'SelectedTeam'将包含所选团队的价值 –