2016-12-27 28 views
0

我使用asp.net核心剃鬚刀引擎。我正在重定向到另一個函數,並且當我發送給它的函數是HttpPost時它不工作。當我將它改爲HttpGet時,一切正常。爲什麼是這樣?RedirectToAction是否僅適用於HttpGet?

這裏是我的代碼

static bool init = false; 
// GET: /Home/ 
[HttpGet] 
[Route("")] 
public IActionResult Index() 
{ 
    if(init == false){ 
     HttpContext.Session.SetString("Happiness", "190"); 
     HttpContext.Session.SetString("Fullness", "190"); 
     HttpContext.Session.SetString("Energy", "190"); 
     HttpContext.Session.SetString("Meal", "3"); 
     HttpContext.Session.SetString("Message", ""); 
     HttpContext.Session.SetString("Tree", "/images/regular_tree.jpeg"); 
     init = true; 
    } 
    ViewData["Tree"] = HttpContext.Session.GetString("Tree"); 
    ViewData["Happiness"] = HttpContext.Session.GetString("Happiness"); 
    ViewData["Fullness"] = HttpContext.Session.GetString("Fullness"); 
    ViewData["Energy"] = HttpContext.Session.GetString("Energy"); 
    ViewData["Meal"] = HttpContext.Session.GetString("Meal"); 
    ViewData["Message"] = HttpContext.Session.GetString("Message"); 

    if(Int32.Parse(HttpContext.Session.GetString("Happiness")) >= 100 && 
    Int32.Parse(HttpContext.Session.GetString("Fullness")) >= 100 && 
    Int32.Parse(HttpContext.Session.GetString("Energy")) >= 100){ 
     System.Console.WriteLine("WinFunction"); 
     System.Console.WriteLine("WinTwice"); 
     return RedirectToAction("Win"); 
    } 
    return View(); 
} 

[HttpGet] 
[Route("win")] 
public IActionResult Win() 
{ 
    System.Console.WriteLine("Win"); 
    return View(); 
} 
+0

[This page](http://stackoverflow.com/questions/129335/how-do-you-redirect-to-a-page-using-the-post-verb#answer-1343182)包含一個有趣的解決方法你可能可以使用。 –

回答

2

聲明return RedirectToAction將發送302響應與在位置標頭的新的URL,瀏覽器和瀏覽器將發出該URL新的GET請求。如果您的操作方法僅標記爲HttpPost屬性,則它不適用於GET請求。因此,簡而言之,您的Win操作不應標記爲[HttpPost]操作。

+0

這個答案沒有得到根本原因,即HTTP不支持使用POST重定向。 –

相關問題