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>
}