C# 将数据从视图传递到窗体旁边的控制器';s值
我正在做的网站的一部分(一个简单的逐圈浏览游戏)要求我将数据从一个视图传递到一个控制器(从DropDownList传递一个外键,并将视图中的另一个整数值作为参数传递给控制器)。接下来,控制器使用这些值将执行传递给另一个控制器 我的问题是,我很难弄清楚MVC如何返回视图中的数据,如何在类型中绑定并将其用作参数。我知道我可以使用动作链接指向我的下一个控制器,但我不知道如何在DropDownList中检索选定的值。或者使用输入按钮,但我不知道返回的值是什么或如何返回的 如果你需要额外的解释或任何令人困惑的事情,一定要告诉我 这是我的密码: Razor中的视图,接收下面定义的视图模型C# 将数据从视图传递到窗体旁边的控制器';s值,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我正在做的网站的一部分(一个简单的逐圈浏览游戏)要求我将数据从一个视图传递到一个控制器(从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 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);
}
在ViewModel中,创建三个属性
@Html.HiddenFor(m=>m.otheritemsthattouneedtogetbackatcontroller)Quick-side-note。视图模型不应包含数据访问逻辑。其目的是表示UI或表单提交的状态@sajoshi方向看起来不错,应该给你想要的。PS:喜欢你的jpeg文件在评论中的名称。
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});
}