我想從我的視圖傳回一個ViewBag項目回到該視圖的後期方法,但我有困難。asp.net mvc 5 - 將ViewBag項目傳遞迴控制器
這是我的方法的簡化版本:
public ActionResult CreateGame(int id)
{
var selPlayer = db.Players.Find(id);
if (selPlayer == null)
{
return HttpNotFound();
}
ViewBag.SelPlayerId = selPlayer.PlayerID;
PlayerGame newGame = new PlayerGame();
return View(newGame);
}
[HttpPost]
public ActionResult CreateGame(PlayerGame newGame)
{
newGame.GameTitle = newGame.GameTitle;
newGame.GameNotes = newGame.GameNotes;
newGame.PlayerID = newGame.PlayerID;
return RedirectToAction("PlayerView");
return View(newGame);
}
這是我圖的簡化版本:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.GameTitle)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.GameTitle)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.GameNotes)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.GameNotes)
</div>
@Html.HiddenFor(model => model.PlayerID, new { PlayerID = ViewBag.SelPlayerId })
<p>
<input type="submit" value="Submit Game" class="btn btn-info" />
</p>
</fieldset>
</div>
}
在POST方法,你可以看到我想要設置PlayerID等於我作爲ViewBag.SelPlayerID傳遞的玩家ID,但是當我查看調試器中傳遞的值時,ID始終等於0,這是不正確的,因爲我用來測試的玩家有一個ID爲1.
我的問題是,如何將我創建的新遊戲的玩家ID設置爲等於我作爲ViewBag項目傳遞的玩家ID,或者是否有更簡單的方法來做到這一點,我忽略了這一點。
注:玩家ID是我的玩家遊戲模式外鍵:的new { PlayerID = ViewBag.SelPlayerId }
在@Html.HiddenFor()
方法
//Foreign Key for Player
public int PlayerID { get; set; }
[ForeignKey("PlayerID")]
public virtual Player Player { get; set; }
工作完美,謝謝 – CianGallagher