0
我有两个型号,一个一对多的关系添加新的相关模型,以现有的模型
public class Team
{
public int TeamID { get; set; }
public string Name { get; set; }
public virtual ICollection<Player> Players { get; set; }
}
public class Player
{
public int PlayerID { get; set; }
public string Name { get; set; }
public virtual Team Team { get; set; }
}
我想改变球队的详细信息视图,使添加新球员的球队
// GET: /Team/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Player player = db.Players.Find(id);
if (player == null)
{
return HttpNotFound();
}
return View(player);
}
这是一个有点难以找到这个但从我可以收集去了解这一点的最好办法的任何信息将是增加一个视图模型
public class TeamViewModel
{
public Team team { get; set; }
public Player player { get; set; }
}
并发送到我的详细信息视图,我没有太多的成功,我不太确定这是否是正确的方法。
任何链接或指导将不胜感激。
更新
我已经设法查看工作的细节,但现在需要理清POST方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Details(TeamViewModel tvm)
{
if (ModelState.IsValid)
{
tvm.player.team = tvm.team;
db.Players.Add(tvm.player);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(tvm);
}
这将创建一个新的球员,但不会存储的关系所以玩家表中的列TeamID是空的。
更新2
我做了一些调试,似乎该职位期间,我teamViewModel不存储团队数据。
// GET: /Team/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Team team = db.Teams.Find(id);
if (team == null)
{
return HttpNotFound();
}
var teamViewModel = new TeamViewModel()
{
team = team,
player = new Player() { Team = db.Team.Find(id) }
};
return View(teamViewModel);
}
// POST: /Team/Details/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Details(TeamViewModel teamViewModel)
{
if (ModelState.IsValid)
{
db.Players.Add(teamViewModel.player);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(teamViewModel);
}
好的,所以我已经看到了工作现在我只需要找出后的方法,我会更新我的问题。 – Rick