gpt4 book ai didi

c# - 创建简单的 ViewModel 以在 MVC 5 中的一个 View 中显示两个数据表

转载 作者:行者123 更新时间:2023-12-02 14:24:26 26 4
gpt4 key购买 nike

我是 MVC 新手,我正在尝试为某个 View 创建一个 ViewModel。我很困惑,无法在网上找到如何制作包含两个简单表格的 View 的简单解释 - 一个显示 Player.cs 中所有球员的列表,另一个显示 Season.cs 中所有赛季的列表。我可以使用 EF 在单独的 View 中执行此操作,但无法创建一个显示两个表的 View 。感谢您帮助这个 MVC 新手,我希望这能帮助其他初学者。

这是我的三个模型。首先是Player.cs

using System;
using System.Collections.Generic;

namespace TheFlyingPig.Models
{
public class Player
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }

public virtual ICollection<Stat> Stats { get; set; }
}
}

下一个模型是 Season.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;

namespace TheFlyingPig.Models
{
public class Season
{
public int SeasonID { get; set; }
public string SeasonName { get; set; }

public virtual ICollection<Stat> Stats { get; set; }
}
}

第三个模型是 Stat.cs

namespace TheFlyingPig.Models
{
public class Stat
{
public int StatID { get; set; }
public int SeasonID { get; set; }
public int PlayerID { get; set; }
public int Hits { get; set; }

public virtual Season Season { get; set; }
public virtual Player Player { get; set; }
}
}

这是我尝试创建的 ViewModel:TeamStat.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using TheFlyingPig.Models;

namespace TheFlyingPig.ViewModels
{
public class TeamStat
{
public List<Player> Players { get; set; }

public List<Season> Seasons { get; set; }
}
}

这是我的 Controller :

using System.Data;
using System.Data.Entity;
using System.Net;
using TheFlyingPig.Models;
using TheFlyingPig.ViewModels;

namespace TheFlyingPig.Controllers
{
public class HomeController : Controller
{
private SoftballContext db = new SoftballContext();

public ActionResult Index()
{
return View();
}

public ActionResult TeamStat()
{
var players = db.Players().ToList();
var seasons = db.Seasons().ToList();

var view = new TeamStat(players, seasons);
return View(view);
}
}
}

这是我的观点:TeamStat.cshtml

@model TheFlyingPig.ViewModels.TeamStat

@{
ViewBag.Title = "Team Stats";
}

<h2>Team Stats</h2>

@foreach (var player in Model._players)
{
<table>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>@player.FirstName</td>
<td>@player.LastName</td>
</tr>
</tbody>
</table>
}

<br /><br /><br />

@foreach (var season in Model._seasons)
{
<table>
<thead>
<tr>
<th>Season Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>@season.SeasonName</td>
</tr>
</tbody>
</table>
}

最佳答案

首先,您当前在返回 View 之前没有设置 View 模型的属性(您没有接受 2 个参数的构造函数)

public ActionResult TeamStat()
{
var players = db.Players().ToList();
var seasons = db.Seasons().ToList();
var view = new TeamStat()
{
Players = players,
Seasons = seasons
};
return View(view);
}

其次,您的 View 引用了不存在的属性 _players_seasons。应该是

@foreach (var player in Model.Players) { ....

@foreach (var player in Model.Seasons) { ....

关于c# - 创建简单的 ViewModel 以在 MVC 5 中的一个 View 中显示两个数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27465286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com