我是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();
}
当我点击一个按钮时,我调用此方法,然后服务器需要半分钟,并说它无法访问该视图。
然后我检查我的数据库,我有500多个新的数据行。
我不确定发生了什么,但看起来它不断调用此方法并写入数据库。
任何人都知道为什么,以及我如何解决它?
答案 0 :(得分:5)
您最后使用
递归调用该方法CASE
您应该返回return EggRecieved();
,例如
ActionResult
答案 1 :(得分:2)
这种情况正在发生,因为你在return语句中写道:
year_list = []
for data in my_list:
year = data[0]
data.insert(1, Area)
if year in year_list:
data.insert(2, "Metro")
else:
data.insert(2, None)
year_list.append(year)
file.write("|".join(map(str, data)) + '\n')
这意味着你再次调用相同的方法并且它陷入无限循环抛出错误。使用View或Json等删除它。
答案 2 :(得分:1)
你在代码末尾写的是返回EggRecieved()即worng, 你需要返回你想要的视图()。 所以将EggRecieved替换为view();因为当你返回EggRecieved()时它会进行递归循环并每次调用 谢谢