(很抱歉,如果所有這些問題都是愚蠢的)ASP.NET MVC超載控制器方法不能正常工作
我在我的控制器兩種方法
[HttpGet]
[Authorize]
public ActionResult Pokemon(int id)
{
var user = db.PDCUsers
.SingleOrDefault(x => x.Username == User.Identity.Name);
var pkmn = db.PlayerPkmns.SingleOrDefault(x => x.Id == id);
return View(new DetailedPokemonViewModel(pkmn, user.Id, user.StepsIncMult));
}
和
[HttpPost]
[ChildActionOnly]
[Authorize]
public ActionResult Pokemon(int id, int steps)
{
var user = db.PDCUsers.SingleOrDefault(x => x.Username == User.Identity.Name);
var pkmn = db.PlayerPkmns.SingleOrDefault(x => x.Id == id);
if (pkmn.CurrentTrainerId == user.Id)
{
pkmn.Experience = pkmn.Experience + steps;
db.SaveChanges();
}
return Pokemon(id);
}
我m從Pokemon(int id)
查看Pokemon(int id, int steps)
<a href="@Url.Action("Pokemon", "PokemonView", new { id = Model.Id, steps = 5000 })">walk</a>
但是,當我點擊鏈接Pokemon(int id, int steps)
,它不更新數據庫值 - 當我把一個斷點,它不註冊。我不認爲我甚至擊中了這個方法,但是頂部的url有steps參數連接?
所有我想要做的是更新作爲參數傳遞的步驟數量的數據行的經驗值。我不想要一個新的視圖(現在) - 我只是想讓它再次顯示Pokemon(int id)視圖。
是否有調用方法然後返回到它被稱爲從視圖的最佳做法?另外,是否有任何明顯的原因,爲什麼我的數據庫值不更新/斷點沒有被打中?
感謝
編輯:
通過使用RedirectToAction
而不是返回的Pokemon(int id)
方法, 和重命名Pokemon(int id, int steps)
避免過載問題HTTPGET,它的作品!
謝謝!
操作會導致GET請求發生。您使用POST標記了該操作。另外,如果您不想刷新視圖,請使用AJAX調用 – Nkosi
您必須從第二種方法中刪除'[HttpPost]'。 –
我嘗試刪除HttpPost,但它仍然不更新 - 我會嘗試與AJAX搞亂 – mint