我有一个动作,我从一个锚调用,因此,站点/控制器/动作/ID,其中ID是一个int。

稍后,我需要从控制器重定向到相同的动作。

有什么聪明的办法吗?目前我在tempdata中存储ID,但当你 返回后,按f5再次刷新页面,tempdata消失,页面崩溃。


当前回答

RedirectToAction("Action", "Controller" ,new { id });

为我工作,不需要做新的{id = id}

我重定向到同一个控制器内,所以我不需要“控制器”,但我不确定当控制器被要求作为参数时背后的具体逻辑。

其他回答

您可以将id作为RedirectToAction()方法的routeValues参数的一部分传递。

return RedirectToAction("Action", new { id = 99 });

这将导致重定向到Site/Controller/Action/99。不需要临时或任何类型的视图数据。

RedirectToAction("Action", "Controller" ,new { id });

为我工作,不需要做新的{id = id}

我重定向到同一个控制器内,所以我不需要“控制器”,但我不确定当控制器被要求作为参数时背后的具体逻辑。

如果有人想显示[httppost]的错误消息,那么他/她可以尝试通过传递一个ID使用

return RedirectToAction("LogIn", "Security", new { @errorId = 1 });

详情如下

 public ActionResult LogIn(int? errorId)
        {
            if (errorId > 0)
            {
                ViewBag.Error = "UserName Or Password Invalid !";
            }
            return View();
        }

[Httppost]
public ActionResult LogIn(FormCollection form)
        {
            string user= form["UserId"];
            string password = form["Password"];
            if (user == "admin" && password == "123")
            {
               return RedirectToAction("Index", "Admin");
            }
            else
            {
                return RedirectToAction("LogIn", "Security", new { @errorId = 1 });
            }
}

希望它能正常工作。

....

int parameter=Convert.ToInt32(Session["Id"].ToString());

....

return RedirectToAction("ActionName", new { Id = parameter });

如果你需要重定向到控制器外的动作,这将工作。

return RedirectToAction("ACTION", "CONTROLLER", new { id = 99 });