使用参数时RedirectToAction无法正常工作

时间:2017-01-18 17:03:57

标签: c# asp.net redirect

我正在使用asp.net核心razor引擎实体框架。我试图重定向到另一个有参数的方法,但是我一直在找不到localhost页面的消息。不确定我做错了什么。我正在尝试从我的Update方法重定向到我的LookUpItem方法。

这是我的代码

    [HttpPost]
    [Route("LookUpItem/{id}")]
    public IActionResult LookUpItem(int id)
    {
        var user = _context.Auction.FirstOrDefault(x => x.Id == id);
        ViewData["Product"] = user.Product;
        ViewData["user"] = user.First_Name_Of_Seller;
        var timeLeft = user.End_Date.Subtract(DateTime.Now);
        ViewData["Description"] = user.Description;
        ViewData["HighestBid"] = user.Bid;
        ViewData["NameOfBidder"] = user.First_Name_Highest_Bid + " " + user.Last_Name_Highest_Bid;

        HttpContext.Session.SetString("item_id", id.ToString());
        if (timeLeft.Days > 0)
        {
            ViewData["EndDate"] = (@timeLeft.Days + " Days");
        }
        else if (timeLeft.Hours > 0)
        {
            ViewData["EndDate"] = (@timeLeft.Hours + " Hours");
        }
        else
        {
            ViewData["EndDate"] = (@timeLeft.Minutes + " Minutes");
        }
        return View();
    }

    [HttpPost]
    [Route("update")]
    public IActionResult Update(Auction item)
    {
        string LocalVariable = HttpContext.Session.GetString("item_id");
        System.Console.WriteLine("?????????????");
        System.Console.WriteLine( LocalVariable);
        System.Console.WriteLine("?????????????");
        return RedirectToAction("LookUpItem",new {@id = Int32.Parse(LocalVariable)});//Trying to call the above method
    }

2 个答案:

答案 0 :(得分:1)

您正尝试重定向到[HttpPost]操作。您需要重定向到[HttpGet]操作。

此外,@的{​​{1}}部分中不需要routeValues符号。此外,这可能只是我,但为什么不能进行解析之前而不是尝试快捷方式过程并将其全部组合到一个方法中。

RedirectToAction

如果有帮助,请告诉我

答案 1 :(得分:1)

HTTP不支持使用POST重定向到页面。

  

Controller.RedirectToAction:返回对浏览器的HTTP 302响应,这会导致浏览器向指定的操作发出GET请求。 (https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction(v=vs.118).aspx