我有一个动作,我从一个锚调用,因此,站点/控制器/动作/ID,其中ID是一个int。
稍后,我需要从控制器重定向到相同的动作。
有什么聪明的办法吗?目前我在tempdata中存储ID,但当你 返回后,按f5再次刷新页面,tempdata消失,页面崩溃。
我有一个动作,我从一个锚调用,因此,站点/控制器/动作/ID,其中ID是一个int。
稍后,我需要从控制器重定向到相同的动作。
有什么聪明的办法吗?目前我在tempdata中存储ID,但当你 返回后,按f5再次刷新页面,tempdata消失,页面崩溃。
当前回答
//How to use RedirectToAction in MVC
return RedirectToAction("actionName", "ControllerName", routevalue);
例子
return RedirectToAction("Index", "Home", new { id = 2});
其他回答
MVC 4的例子…
注意,您并不总是必须传递名为ID的参数
var message = model.UserName + " - thanks for taking yourtime to register on our glorious site. ";
return RedirectToAction("ThankYou", "Account", new { whatever = message });
And,
public ActionResult ThankYou(string whatever) {
ViewBag.message = whatever;
return View();
}
当然,你可以将字符串分配给模型字段,而不是使用ViewBag,如果这是你的偏好。
RedirectToAction带参数:
return RedirectToAction("Action","controller", new {@id=id});
你也可以发送任何ViewBag, ViewData..像这样
return RedirectToAction("Action", new { Dynamic = ViewBag.Data= "any data" });
我也有这个问题,如果你在同一个控制器中,一个很好的方法是使用命名参数:
return RedirectToAction(actionName: "Action", routeValues: new { id = 99 });
如果有人想显示[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 });
}
}
希望它能正常工作。