C# 创建一个模型类字段,其中包含ASP.NET MVC中另一个表中的对象列表

C# 创建一个模型类字段,其中包含ASP.NET MVC中另一个表中的对象列表,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我将在两周内学习C和ASP.NETMVC框架,我希望通过一个小型web应用程序应用这些知识。我需要你的帮助/建议,以便在两个类之间设置一个新字段 目标: 这个应用程序应该对我的足球队有用。我有第一个积垢,可以用来对付球员。我可以创建玩家,编辑玩家 我有第二个CRUD,可以处理比赛细节日期时间、音高、比赛格式 我希望能够添加特定比赛的可用球员。也就是说,能够在桌上比赛的一个场地内添加来自桌上比赛的球员列表。通过这种方式,当我详细查看一场比赛时,我可以看到球员名单,以便稍后使用JavaScript创

我将在两周内学习C和ASP.NETMVC框架,我希望通过一个小型web应用程序应用这些知识。我需要你的帮助/建议,以便在两个类之间设置一个新字段

目标:

这个应用程序应该对我的足球队有用。我有第一个积垢,可以用来对付球员。我可以创建玩家,编辑玩家

我有第二个CRUD,可以处理比赛细节日期时间、音高、比赛格式

我希望能够添加特定比赛的可用球员。也就是说,能够在桌上比赛的一个场地内添加来自桌上比赛的球员列表。通过这种方式,当我详细查看一场比赛时,我可以看到球员名单,以便稍后使用JavaScript创建团队组成,如果可能的话,可以在动态图片上移动对象,而不是我目前的问题

我的班级报告:

非常简单:

namespace FCSL.Models.Joueur
{
    public class Joueur
    {
        [Key, Display(Name = "ID")]
        public int JoueurID { get; set; }

        [Required, Display(Name = "Nom"), StringLength(30)]
        public string Lastname { get; set; }

        [Required, Display(Name = "Prénom"), StringLength(30)]
        public string Firstname { get; set; }

        [Required]
        [Display(Name = "Poste")]

        public string Poste { get; set; }

        public string Image { get; set; }

    }
}
我在VisualStudio生成的CRUD后面找到了它,它工作得很好

我的班级比赛:

添加新字段:

现在我想在我的Match类中添加一个新字段,以便在名为ListJouers的字段中从Jouer类中选择球员列表

我必须加上这样的东西吗

[Required, Display(Name = "Joueurs")]
public List<Joueur.Joueur> ListeJoueurs { get; set; }
然后,如何显示多个选定下拉列表以在create.cshtml视图文件中显示此字段

非常感谢大家参加预赛

公开课比赛 { 所有旧财产 publis字符串列表器{get;set;} }

ViewBag.lstCourse=您的列表

        @Html.DropDownListFOR(m=>m.ListeJoueurs ,ViewBag.lstCourse as selectectlsist),select"",new { @class = "form-control"})
公开课比赛 { 所有旧财产 publis字符串列表器{get;set;} }

ViewBag.lstCourse=您的列表

        @Html.DropDownListFOR(m=>m.ListeJoueurs ,ViewBag.lstCourse as selectectlsist),select"",new { @class = "form-control"})

您需要添加两个属性TeamOne和TeamTwo,并在每个团队中添加属性Players作为集合,用于保存每个团队的选定玩家

在你的班级比赛中:

添加新的班级团队:

最后,在create.chtml中添加下拉列表,如下所示:

public ActionResult Match()
{
    ...
    var match = new MVCApp.Models.Match
    {
        AdversaryTeam = "Equipe de France",
        Field = "Stade de France",
        MatchDay = DateTime.Today,
        MatchTime = DateTime.Now,
        TeamOne = new Team
        {
            Players = new List<Player>
            {
                new Player { PlayerID = 1, Firstname = "Zineeddine", Lastname = "Zidane", Poste = "" },
                new Player { PlayerID = 2, Firstname = "Roberto", Lastname = "Carlos", Poste = "" },
                new Player { PlayerID = 3, Firstname = "Gianluca", Lastname = "Pagliuca", Poste = "" },
            }
        },

         TeamTwo = new Team
         {
            Players = new List<Player>
            {
                new Player { PlayerID = 1, Firstname = "Zineeddine", Lastname = "Zidane", Poste = "" },
                new Player { PlayerID = 2, Firstname = "Roberto", Lastname = "Carlos", Poste = "" },
                new Player { PlayerID = 3, Firstname = "Gianluca", Lastname = "Pagliuca", Poste = "" },
            }
         }
    };

    var vm = new MatchPlayersVM
    {
        Match = match, 
        TeamOnePlayers = match.TeamOne.Players.Select(p => new SelectListItem { Text = p.Firstname, Value = p.PlayerID.ToString() }),
        TeamTwoPlayers = match.TeamTwo.Players.Select(p => new SelectListItem { Text = p.Firstname, Value = p.PlayerID.ToString() }),
    };

    ViewBag.MatchVM = vm;

    return View();
}
@using MVCApp.Models

@model MatchPlayersVM

@Html.DropDownListFor(m => m.TeamOneSelectedValues, ViewBag.MatchVM.TeamOnePlayers as IEnumerable<SelectListItem>, new { multiple = "multiple" })

@Html.DropDownListFor(m => m.TeamTwoSelectedValues, ViewBag.MatchVM.TeamOnePlayers as IEnumerable<SelectListItem>, new { multiple = "multiple" })

您需要添加两个属性TeamOne和TeamTwo,并在每个团队中添加属性Players作为集合,用于保存每个团队的选定玩家

在你的班级比赛中:

添加新的班级团队:

最后,在create.chtml中添加下拉列表,如下所示:

public ActionResult Match()
{
    ...
    var match = new MVCApp.Models.Match
    {
        AdversaryTeam = "Equipe de France",
        Field = "Stade de France",
        MatchDay = DateTime.Today,
        MatchTime = DateTime.Now,
        TeamOne = new Team
        {
            Players = new List<Player>
            {
                new Player { PlayerID = 1, Firstname = "Zineeddine", Lastname = "Zidane", Poste = "" },
                new Player { PlayerID = 2, Firstname = "Roberto", Lastname = "Carlos", Poste = "" },
                new Player { PlayerID = 3, Firstname = "Gianluca", Lastname = "Pagliuca", Poste = "" },
            }
        },

         TeamTwo = new Team
         {
            Players = new List<Player>
            {
                new Player { PlayerID = 1, Firstname = "Zineeddine", Lastname = "Zidane", Poste = "" },
                new Player { PlayerID = 2, Firstname = "Roberto", Lastname = "Carlos", Poste = "" },
                new Player { PlayerID = 3, Firstname = "Gianluca", Lastname = "Pagliuca", Poste = "" },
            }
         }
    };

    var vm = new MatchPlayersVM
    {
        Match = match, 
        TeamOnePlayers = match.TeamOne.Players.Select(p => new SelectListItem { Text = p.Firstname, Value = p.PlayerID.ToString() }),
        TeamTwoPlayers = match.TeamTwo.Players.Select(p => new SelectListItem { Text = p.Firstname, Value = p.PlayerID.ToString() }),
    };

    ViewBag.MatchVM = vm;

    return View();
}
@using MVCApp.Models

@model MatchPlayersVM

@Html.DropDownListFor(m => m.TeamOneSelectedValues, ViewBag.MatchVM.TeamOnePlayers as IEnumerable<SelectListItem>, new { multiple = "multiple" })

@Html.DropDownListFor(m => m.TeamTwoSelectedValues, ViewBag.MatchVM.TeamOnePlayers as IEnumerable<SelectListItem>, new { multiple = "multiple" })

如果我明白了,我有我的模型:Jouer,Match,组队,在viewmodel MatchPlayerVM中多一个?但是Team和MatchPlayerVM是等价的不?不,Team是一个保存玩家和其他信息集合的模型。MathPlayerVM是一个以其他格式表示数据的ViewModel,如果您对其进行比较,您的模型将包含一个原始数据您的玩家列表和您的ViewModel包含一个经过转换的玩家列表。您可能有100个具有多个导航的属性以及使用VM it提高性能的好处,以避免序列化问题并转换数据。你也有一个模型,但你可以有它的多个表示。如果我理解,我有我的模型:Jouer,Match,Team,在viewmodel MatchPlayerVM中还有一个?但是Team和MatchPlayerVM是等价的不?不,Team是一个保存玩家和其他信息集合的模型。MathPlayerVM是一个以其他格式表示数据的ViewModel,如果您对其进行比较,您的模型将包含一个原始数据您的玩家列表和您的ViewModel包含一个经过转换的玩家列表。您可能有100个具有多个导航的属性以及使用VM it提高性能的好处,以避免序列化问题并转换数据。您也有一个模型,但可以有它的多个表示形式。