我正在做的網站的一部分(一個簡單的每回合轉瀏覽器遊戲)要求我將數據從視圖傳遞到控制器(傳遞一個外鍵從DropDownList和視圖中的另一個整數值作爲控制器的參數)。接下來,控制器使用這些值將執行傳遞給另一個控制器。將數據從視圖傳遞到控制器以及表單的值
我的問題是,我有麻煩搞清楚如何MVC返回我的視圖內的數據和捆綁內部類型,並將它們用作參數。我知道我可以使用動作鏈接指向我的下一個控制器,但我不知道如何檢索DropDownList中的選定值。這或使用輸入按鈕,但我不知道什麼或如何返回值。
請告訴我,如果您需要額外的解釋或任何混淆。
這是我的代碼:
在剃刀的視圖,在接收到圖模型,定義如下。
@model BattleForLurnia_MVC.Controllers.ChooseCharacterViewModel
@{
ViewBag.Title = "ChooseCharacter";
}
<h2>Choose Your Character</h2>
<fieldset>
<legend>Choose your fighter !</legend>
<div class="display-label">Your characters :</div>
<div class="display-field">
@Html.DropDownList("CharactersList", String.Empty)
</div>
@* Here is the part that returns the values, either an ActionLink or
an Input button.*@
</fieldset>
我的視圖模型傳遞給視圖
public class ChooseCharacterViewModel
{
Battle_For_LurniaEntities db = new Battle_For_LurniaEntities();
public Player player { get; set; }
public Character targetCharacter { get; set; }
public ChooseCharacterViewModel(string playerUsername, Character opponent)
{
player = db.Players.Single(plr => plr.Username == playerUsername);
targetCharacter = opponent;
}
public ChooseCharacterViewModel(){}
}
發送查看
public ActionResult ChooseCharacter(int targetCharacter_ID)
{
Character targetChar = db.Characters.Single(chr => chr.ID_Character == targetCharacter_ID);
ChooseCharacterViewModel chooseCharacter = new ChooseCharacterViewModel(Session["Username"].ToString(), targetChar);
// Using LINQ to get characters owned by the current player. Fuckyeah.jpg =D
IEnumerable<Character> blabla = from VAR in db.Characters
where VAR.FK_Player_ID == chooseCharacter.player.ID_Player
select VAR;
ViewBag.CharactersList = new SelectList(blabla, "ID_Character", "Name");
return View(chooseCharacter);
}
最後的但是控制器控制器在我的視圖中接收數據併發送另一個視圖。
[HttpPost]
public ActionResult ChooseCharacter(int FK_Character_ID, Character targetCharacter)
{
Character sourceCharacter = db.Characters.Single(chr => chr.ID_Character == FK_Character_ID);
return RedirectToAction("Fight", new {SourceCharacter = sourceCharacter, TargetCharacter = targetCharacter});
}
快速提示。視圖模型不應包含數據訪問邏輯。其目的是表示UI或表單提交的狀態。 @sajoshi方向似乎沒問題,應該給你你想要的。 PS:在評論中愛你的jpeg文件的名稱。 – Roman