在我的控制器中使用会话来传递数据
本文关键字:数据 会话 我的 控制器 | 更新日期: 2023-09-27 18:32:31
我正在构建一个项目,用户可以在其中添加团队并选择要添加的团队 players.so 添加球员时,团队的ID应随之传递。我有一个控制器来添加团队,另一个控制器来添加球员。我将球队的 ID 传递给付款人控制器的索引操作方法,并显示该所选球队的所有球员。现在我想添加该团队的一名球员。我在 Index 操作方法中创建了一个会话来保存 ID,并在创建操作方法中使用它。调试时,我可以看到 ID 传递正确,但在创建新记录时,玩家 ID 始终为 0,因此 db.savechanges() 上发生错误,就像 playerID=0 一样。
这是我的代码片段:
播放器控制器
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 操作
任何帮助真的非常感谢
问题解决了。这就是我所做的,它运行良好
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 { }
}