使用mvc 3在一个视图中处理两个模型
本文关键字:处理 两个 模型 视图 一个 mvc 使用 | 更新日期: 2023-09-27 17:59:02
让我们假设我们有两个模型:
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; }
}
在你看来——假设你为一支特定的球队增加了球员——
@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>
}
然后在AJAX中使用一些javascript,您就可以从通过AJAX检索的列表中添加一个新玩家。在添加玩家代码(绑定到按钮)的回调中,您可以添加名称和另一个隐藏字段,其中玩家id为<input type="hidden" name="Players[n].PlayerID" value="_some_id_" />
,其中n
是序列中的下一个数字。根据您的确切功能,您可能可以省略n
。