我正在构建一个项目,用户可以在其中添加团队并选择团队来添加玩家。所以当添加玩家时,团队的ID应该随之传递。我有一个控制器来添加团队和另一个控制器来添加玩家。我将团队的ID传递给付款人控制器的索引操作方法并显示所选团队的所有玩家。现在我想添加该团队的玩家。我在索引操作方法中创建了一个会话来保存ID和在创建Action方法中使用它。在调试时我可以看到Id传递正确但在创建新记录时,播放器ID始终为0,因此db.savechanges()的错误发生在playerID = 0。 / p>
这是我的代码片段:
播放器控制器
public ActionResult Index(int id)
{
string team = db.Teams.Where(m => m.Id == id).Select(m => m.teamName).First();
var player = db.players.Where(m => m.team == team).ToList();
int Tid=db.Teams.Where(m=>m.Id==id).Select(m=>m.Id).FirstOrDefault();
Session["TeamID"] = Tid;
return View(player);
}
[HttpPost]
public ActionResult AddEditRecord(player Player, string cmd)
{
// team Id
int TeamId = (int)Session["TeamID"];
//team name
string team = db.Teams.Where(m => m.Id == TeamId).Select(m => m.teamName).First();
if (ModelState.IsValid)
{
if (cmd == "Save")
{
try
{
db.players.Add(Player);
player pl = db.players.Where(m => m.team == null).FirstOrDefault();
pl.team = team;
db.SaveChanges();
// db.SaveChanges();
return RedirectToAction("Index");
}
catch { }
}
}
}
}
播放器ID始终设置为零。我的代码
错误我正在使用部分视图,因为我正在使用弹出对话框进行CREUD操作
非常感谢任何帮助
答案 0 :(得分:0)
问题解决了。这就是我所做的,它完美地运作
if (ModelState.IsValid)
{
if (cmd == "Save")
{
try
{
var plyr = new player();
/* db.players.Add(Player);
// player pl = db.players.Where(m => m.team == null).FirstOrDefault();
// Player.team = team;
db.SaveChanges();*/
plyr.playerName = Player.playerName;
plyr.team = team;
plyr.position = Player.position;
plyr.email = Player.email;
plyr.type = Player.type;
plyr.height = Player.height;
db.players.Add(plyr);
db.SaveChanges();
return RedirectToAction("Index/" + TeamId);
}
catch { }
}