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