Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在MVC中从表单中检索两个模型?_Asp.net Mvc - Fatal编程技术网

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