MVC ASP.NET写入数据库是无意中循环的

min*_*int -3 c# database asp.net asp.net-mvc visual-studio

我是MVC和ASP.NET的新手,但我遇到了一个奇怪的问题.

我正在向我的数据库中添加一个条目,然后保存更改,但事实并非如此.

[Authorize]
    public ActionResult EggRecieved()
    {
        //CHECK IF THEY HAVE RECIEVED EGG IN LAST DAY

        var user = db.PDCUsers.SingleOrDefault(x => x.Username == User.Identity.Name);
        var userId = user.Id;

        var possibleEggs = db.PkmnDatas.Where(x => x.CanBeEgg == true);
        var rand = new Random();
        var no = rand.Next(0, possibleEggs.Count());
        var pokemonArray = possibleEggs.ToArray();
        var pokemon = pokemonArray[rand.Next(0, pokemonArray.Count())];
        Boolean? isMale = null;
        if (pokemon.GenderRatio != null)
        {
            isMale = rand.Next(0, 1000) < pokemon.GenderRatio1.ChanceMale * 1000;
        }
        var isShiny = 1 == rand.Next(1,Constants.SHINYCHANCE);
        //GET THE ABILITIES

        db.PlayerPkmns.Add(new PlayerPkmn
        {
            PkmnDataId = pokemon.Id,
            Nickname = pokemon.Name,
            IsMale = (bool)isMale,
            Nature = rand.Next(1, 25),
            Ability = 1,
            EggObtained = DateTime.Now,
            Shiny = isShiny,
            CurrentTrainerId = userId,
            OriginalTrainerId = userId,
            StepsToHatch = Constants.TOTALSTEPSFOREGGHATCH
        });

        db.SaveChanges();

        return EggRecieved();
    }
Run Code Online (Sandbox Code Playgroud)

当我单击一个按钮时,我调用此方法,然后服务器需要半分钟,并说它无法访问该视图.

然后我检查我的数据库,我有500多个新的数据行.

我不确定发生了什么,但看起来它不断调用这个方法并写入数据库.

任何人都知道为什么,以及如何解决它?

Dan*_*tru 5

你最后用递归方式调用方法

return EggRecieved();
Run Code Online (Sandbox Code Playgroud)

你应该回到ActionResult那里,比如

return View("MyView");
Run Code Online (Sandbox Code Playgroud)