Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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
C# 使用mvc 3在一个视图中使用两个模型_C#_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

C# 使用mvc 3在一个视图中使用两个模型

C# 使用mvc 3在一个视图中使用两个模型,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,假设我们有两个模型: Teams: Id, Name Player: Id, Name, TeamId 我想在一个视图中保存此团队的团队和玩家集合。因此,在我看来,一定有以下因素: 输入团队名称 输入播放器名称 “添加”按钮可将播放器名称从输入添加到集合 新增玩家名单 保存按钮保存球队和球员的收藏 在这种情况下,我们应该在一个视图上使用两个模型。特别是,我想看看添加按钮场景应该是怎样的 有人能帮上忙吗?您通常会为此使用一个视图模型,该模型会分解为(映射到)实体模型。模型可能如下所示: p

假设我们有两个模型:

Teams: Id, Name
Player: Id, Name, TeamId
我想在一个视图中保存此团队的团队和玩家集合。因此,在我看来,一定有以下因素:

  • 输入团队名称
  • 输入播放器名称
  • “添加”按钮可将播放器名称从输入添加到集合
  • 新增玩家名单
  • 保存按钮保存球队和球员的收藏
在这种情况下,我们应该在一个视图上使用两个模型。特别是,我想看看添加按钮场景应该是怎样的


有人能帮上忙吗?

您通常会为此使用一个视图模型,该模型会分解为(映射到)实体模型。模型可能如下所示:

 public class MeamWithPlayersViewModel
 {
      public long ID { get; set; }  // this ought to match the id parameter on the post
      public string Name { get; set; }
      public TeamPlayer[] Players { get; set; }
 }

 public class TeamPlayer
 {
      public long PlayerID { get; set; }
      public string Name { get; set; }
 }
在您看来——假设您为特定团队添加了球员--

@使用(Html.BeginForm())
{
当前玩家

@对于(int i=0;imodel.Players[i].PlayerID)

} 添加玩家 拯救 }

然后将javascript与AJAX结合使用,实现从通过AJAX检索的列表中添加新播放器的功能。在addplayer code(绑定到按钮)的回调中,您将添加名称和另一个隐藏字段,其中包含播放器id
,其中
n
是序列中的下一个数字。根据您的具体功能,您可能可以省略
n

您需要将这两种功能组合到一个模型中。要么用这两个模型作为属性创建一个模型,要么用所有相同的属性创建一个全新的模型。我尝试过这种方法,但在“添加”按钮时崩溃了。当我单击“添加”按钮时,如何从播放器输入中获取名称并将其添加到控制器上存储的集合?@mavera-您的“保存”按钮应发回以视图模型作为输入的操作(仅填充ID)。然后,您可以使用这些来拉入属性实体模型、更新和保存它们。
 @using (Html.BeginForm())
 {
       <p>Current Players</p>
       @for (int i = 0; i < Model.Players.Length; ++i)
       {
             <p>Model.Players[i].Name
             @Html.HiddenFor( model => model.Players[i].PlayerID )
             </p>
       }
       <button class="add-player">Add Player</button>
       <button class="save-button">Save</button>
 }