Asp.net mvc 如何在MVC中从表单中检索两个模型?
假设以下域模型Asp.net mvc 如何在MVC中从表单中检索两个模型?,asp.net-mvc,Asp.net Mvc,假设以下域模型 public class SystemRequirement { public int SystemRequirementID { get; set; } public Platforms Platform { get; set; } public string CPU { get; set; } public string RAM { get; set; } public string Dsiplay { get; set; } public
public class SystemRequirement
{
public int SystemRequirementID { get; set; }
public Platforms Platform { get; set; }
public string CPU { get; set; }
public string RAM { get; set; }
public string Dsiplay { get; set; }
public string Discription { get; set; }
public int GameID { get; set; }
public virtual Game Game { get; set; }
}
public class Game
{
public int GameID { get; set; }
public string Name { get; set; }
public Genres Genre { get; set; }
public DateTime ReleaseDate { get; set; }
public bool Multiplay { get; set; }
public string About { get; set; }
public virtual List<SystemRequirement> SystemRequirements { get; set; }
}
public class GameSystemViewModel
{
public Game Game { get; set; }
public SystemRequirement SystemRequirement { get; set; }
}
公共类系统要求
{
public int SystemRequirementID{get;set;}
公共平台平台{get;set;}
公共字符串CPU{get;set;}
公共字符串RAM{get;set;}
公共字符串Dsiplay{get;set;}
公共字符串描述{get;set;}
public int GameID{get;set;}
公共虚拟游戏{get;set;}
}
公开课游戏
{
public int GameID{get;set;}
公共字符串名称{get;set;}
公共体裁体裁{get;set;}
公共日期时间释放日期{get;set;}
公共布尔多路{get;set;}
关于{get;set;}的公共字符串
公共虚拟列表SystemRequirements{get;set;}
}
公共类GameSystemViewModel
{
公共游戏{get;set;}
公共系统需求系统需求{get;set;}
}
我想做一个表格,允许添加一个新的游戏,其中包含其系统的要求太
@model KeyStore.WebUI.Models.GameSystemViewModel
@{
ViewBag.Title=“添加”;
Layout=“~/Views/Shared/_AdminLayout.cshtml”;
}
@使用(Html.BeginForm(“Add”,“GameAdmin”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
添加新游戏
@LabelFor(m=>m.Game.Name)
@Html.TextBoxFor(m=>m.Game.Name)
@LabelFor(m=>m.Game.Genre)
@Html.TextBoxFor(m=>m.Game.Genre)
@LabelFor(m=>m.Game.ReleaseDate)
@Html.TextBoxFor(m=>m.Game.ReleaseDate)
@LabelFor(m=>m.Game.Multiplay)
@Html.CheckBoxFor(m=>m.Game.Multiplay)
@LabelFor(m=>m.Game.About)
@text区域(m=>m.Game.About)
系统要求
@LabelFor(m=>m.SystemRequirement.Platform)
@TextBoxFor(m=>m.SystemRequirement.Platform)
@LabelFor(m=>m.SystemRequirement.CPU)
@TextBoxFor(m=>m.SystemRequirement.CPU)
@LabelFor(m=>m.SystemRequirement.RAM)
@TextBoxFor(m=>m.SystemRequirement.RAM)
@LabelFor(m=>m.SystemRequirement.Dsiplay)
@TextBoxFor(m=>m.SystemRequirement.Dsiplay)
@LabelFor(m=>m.SystemRequirement.description)
@Html.TextAreaFor(m=>m.SystemRequirement.description)
}
您需要创建一个包含(SystemRequirement)和(Game)类的复合视图模型,如下所示:
public class CombinedViewModel{
public SystemRequirement { get; set; }
public Game { get; set; }
}
和您的控制器:
public ViewResult Add(){
CombinedViewModel MyModel = new CombinedViewModel();
MyModel.SystemRequirement = new SystemRequirement();
MyModel.Game = new Game();
return View(MyModel);
}
[HttpPost]
public ActionResult Add(CombinedViewModel pModel){
Game game = new Game();
game = pModel.Game;
game.SystemRequirements = new List<SystemRequirement>();
game.SystemRequirements.Add(pModel.SystemRequirement);
gameRepository.Save(game);
return RedirectToAction("Add");
}
公共视图结果添加(){
CombinedViewModel MyModel=新CombinedViewModel();
MyModel.SystemRequirement=新的SystemRequirement();
MyModel.Game=新游戏();
返回视图(MyModel);
}
[HttpPost]
公共操作结果添加(组合视图模型pModel){
游戏=新游戏();
game=pModel.game;
game.SystemRequirements=新列表();
game.SystemRequirements.Add(pModel.SystemRequirement);
gameRepository.Save(游戏);
返回重定向操作(“添加”);
}
意见如下:
@model CombinedViewModel
@{
ViewBag.Title = "Add";
Layout = "~/Views/Shared/_AdminLayout.cshtml"; }
<div class="container">
@using (Html.BeginForm("Add", "GameAdmin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="panel">
<div class="panel-heading">
<h3>Add New Game</h3>
</div>
<div class="panel-body">
@Html.LabelFor(m => m.Game.Name)
@Html.TextBoxFor(m => m.Game.Name)
@Html.LabelFor(m => m.Game.Genre)
@Html.TextBoxFor(m => m.Game.Genre)
@Html.LabelFor(m => m.Game.ReleaseDate)
@Html.TextBoxFor(m => m.Game.ReleaseDate)
@Html.LabelFor(m => m.Game.Multiplay)
@Html.CheckBoxFor(m => m.Game.Multiplay)
@Html.LabelFor(m => m.Game.About)
@Html.TextAreaFor(m => m.Game.About)
</div>
</div>
<div class="panel">
<div class="panel-heading">
<h3>System Requirements</h3>
</div>
<div class="panel-body">
@Html.LabelFor(m => m.SystemRequirements.Platform)
@Html.TextBoxFor(m => m.SystemRequirements.Platform)
@Html.LabelFor(m => m.SystemRequirements.CPU)
@Html.TextBoxFor(m => m.SystemRequirements.CPU)
@Html.LabelFor(m => m.SystemRequirements.RAM)
@Html.TextBoxFor(m => m.SystemRequirements.RAM)
@Html.LabelFor(m => m.SystemRequirements.Dsiplay)
@Html.TextBoxFor(m => m.SystemRequirements.Dsiplay)
@Html.LabelFor(m => m.SystemRequirements.Discription)
@Html.TextAreaFor(m => m.SystemRequirements.Discription)
</div>
</div>
<div class="panel-footer">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
} </div>
@model组合视图模型
@{
ViewBag.Title=“添加”;
Layout=“~/Views/Shared/\u AdminLayout.cshtml”;}
@使用(Html.BeginForm(“Add”,“GameAdmin”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
添加新游戏
@LabelFor(m=>m.Game.Name)
@Html.TextBoxFor(m=>m.Game.Name)
@LabelFor(m=>m.Game.Genre)
@Html.TextBoxFor(m=>m.Game.Genre)
@LabelFor(m=>m.Game.ReleaseDate)
@Html.TextBoxFor(m=>m.Game.ReleaseDate)
@LabelFor(m=>m.Game.Multiplay)
@Html.CheckBoxFor(m=>m.Game.Multiplay)
@LabelFor(m=>m.Game.About)
@text区域(m=>m.Game.About)
系统要求
@LabelFor(m=>m.SystemRequirements.Platform)
@TextBoxFor(m=>m.SystemRequirements.Platform)
@LabelFor(m=>m.SystemRequirements.CPU)
@TextBoxFor(m=>m.SystemRequirements.CPU)
@LabelFor(m=>m.SystemRequirements.RAM)
@TextBoxFor(m=>m.SystemRequirements.RAM)
@LabelFor(m=>m.SystemRequirements.Dsiplay)
@TextBoxFor(m=>m.SystemRequirements.Dsiplay)
@LabelFor(m=>m.SystemRequirements.description)
@text区域(m=>m.SystemRequirements.description)
}
您需要创建一个包含(SystemRequirement)和(Game)类的复合视图模型,如下所示:
public class CombinedViewModel{
public SystemRequirement { get; set; }
public Game { get; set; }
}
和您的控制器:
public ViewResult Add(){
CombinedViewModel MyModel = new CombinedViewModel();
MyModel.SystemRequirement = new SystemRequirement();
MyModel.Game = new Game();
return View(MyModel);
}
[HttpPost]
public ActionResult Add(CombinedViewModel pModel){
Game game = new Game();
game = pModel.Game;
game.SystemRequirements = new List<SystemRequirement>();
game.SystemRequirements.Add(pModel.SystemRequirement);
gameRepository.Save(game);
return RedirectToAction("Add");
}
公共视图结果添加(){
CombinedViewModel MyModel=新CombinedViewModel();
MyModel.SystemRequirement=新的SystemRequirement();
MyModel.Game=新游戏();
返回视图(MyModel);
}
[HttpPost]
公共操作结果添加(组合视图模型pModel){
游戏=新游戏();
game=pModel.game;
game.SystemRequirements=新列表();
game.SystemRequirements.Add(pModel.SystemRequirement);
gameRepository.Save(游戏);
返回重定向操作(“添加”);
}
意见如下:
@model CombinedViewModel
@{
ViewBag.Title = "Add";
Layout = "~/Views/Shared/_AdminLayout.cshtml"; }
<div class="container">
@using (Html.BeginForm("Add", "GameAdmin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="panel">
<div class="panel-heading">
<h3>Add New Game</h3>
</div>
<div class="panel-body">
@Html.LabelFor(m => m.Game.Name)
@Html.TextBoxFor(m => m.Game.Name)
@Html.LabelFor(m => m.Game.Genre)
@Html.TextBoxFor(m => m.Game.Genre)
@Html.LabelFor(m => m.Game.ReleaseDate)
@Html.TextBoxFor(m => m.Game.ReleaseDate)
@Html.LabelFor(m => m.Game.Multiplay)
@Html.CheckBoxFor(m => m.Game.Multiplay)
@Html.LabelFor(m => m.Game.About)
@Html.TextAreaFor(m => m.Game.About)
</div>
</div>
<div class="panel">
<div class="panel-heading">
<h3>System Requirements</h3>
</div>
<div class="panel-body">
@Html.LabelFor(m => m.SystemRequirements.Platform)
@Html.TextBoxFor(m => m.SystemRequirements.Platform)
@Html.LabelFor(m => m.SystemRequirements.CPU)
@Html.TextBoxFor(m => m.SystemRequirements.CPU)
@Html.LabelFor(m => m.SystemRequirements.RAM)
@Html.TextBoxFor(m => m.SystemRequirements.RAM)
@Html.LabelFor(m => m.SystemRequirements.Dsiplay)
@Html.TextBoxFor(m => m.SystemRequirements.Dsiplay)
@Html.LabelFor(m => m.SystemRequirements.Discription)
@Html.TextAreaFor(m => m.SystemRequirements.Discription)
</div>
</div>
<div class="panel-footer">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
} </div>
@model组合视图模型
@{
ViewBag.Title=“添加”;
Layout=“~/Views/Shared/\u AdminLayout.cshtml”;}
@使用(Html.BeginForm(“Add”,“GameAdmin”,FormMethod.Post,new{enctype=“multipart/fo