use*_*864 2 c# asp.net-mvc entity-framework visual-studio-2013 asp.net-mvc-5
我是MVC的新手,我正在尝试为某个View创建一个ViewModel.我很难过,无法在网上找到如何制作包含两个简单表格的视图的简单解释 - 一个显示Player.cs中所有玩家的列表,另一个显示Season.cs中所有季节的列表.我能够在使用EF的单独视图中执行此操作,但无法创建一个显示两个表的视图.感谢您帮助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; }
}
}
Run Code Online (Sandbox Code Playgroud)
下一个型号是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; }
}
}
Run Code Online (Sandbox Code Playgroud)
第三个模型是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; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想要创建的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; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我的观点: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>
}
Run Code Online (Sandbox Code Playgroud)
小智 5
首先,在返回视图之前,您当前没有设置视图模型的属性(您没有接受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);
}
Run Code Online (Sandbox Code Playgroud)
其次,您的观点是指属性_players,_seasons而不存在属性.它应该是
@foreach (var player in Model.Players) { ....
Run Code Online (Sandbox Code Playgroud)
和
@foreach (var player in Model.Seasons) { ....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15171 次 |
| 最近记录: |