我是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'將包含所選團隊的價值 –