在我的控制器中使用会话传递数据

时间:2014-12-01 08:27:34

标签: c# asp.net-mvc session

我正在构建一个项目,用户可以在其中添加团队并选择团队来添加玩家。所以当添加玩家时,团队的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操作

非常感谢任何帮助

1 个答案:

答案 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 { }
            }