2014-12-01 2 views
1

사용자가 팀을 추가하고 팀을 선택하여 플레이어를 추가 할 수있는 프로젝트를 만듭니다. 따라서 플레이어를 추가 할 때 팀의 ID를 전달해야합니다. 팀을 추가하고 다른 컨트롤러를 추가하여 플레이어를 추가합니다. 나는 팀의 ID를 페이더 컨트롤러의 인덱스 액션 메소드에 전달하고 선택한 팀의 모든 플레이어를 표시했습니다. 이제 해당 팀의 플레이어를 추가하고 싶습니다. ID를 보유하고 작업 만들기 메서드에서 ID를 보유하는 인덱스 작업 메서드. 디버깅 할 때 ID가 올바르게 전달되었음을 알 수 있지만 새 레코드를 만들 때 플레이어 ID는 항상 0이므로 db.savechanges() 오류가 발생합니다. playerID = 0과 같이 발생합니다. 데이터를 전달하기 위해 내 컨트롤러에서 세션을 사용합니다.

내 코드의 조각입니다 : 내 코드로 playerID 항상 zero.what로 설정되어

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

이 잘못

플레이어 컨트롤러 내가 부분적으로 사용하고

CREUD 작업을위한 팝업 대화 상자를 사용하고 있기 때문에보기가 발생했습니다.

어떤 도움이 정말로 받아 들여집니다.

답변

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 { } 
      } 
관련 문제