知道RedirectToAction
,我一直在寻找类似的东西来为用户保持 URL 稳定,并将责任从一个 Action 转移到另一个 Action 。
自从我找到zero Google results关于这个话题,我不妨完全尝试解决一个XY problem .
不过,我会尝试解释为什么我认为可能需要这样做。
场景:
public ActionResult A(int id)
{
var uniqueID = CalculateUniqueFromId(id);
// This compiles.
return RedirectToAction("B", new { uniqueID });
// This does not compile.
return RewriteToAction("B", new { uniqueID });
}
public ActionResult B(Guid uniqueID)
{
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
在上面的代码中,action A 从一个整数计算出一个 guid,并将它传递给另一个 action。
解决方法:
我可以将上面的代码改成这样:
public ActionResult A(int id)
{
var uniqueID = CalculateUniqueFromId(id);
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
public ActionResult B(Guid uniqueID)
{
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
这会按预期工作。
不过,在更复杂的情况下,我还是希望时不时地使用“服务器端重定向”(又名重写)。
替代解决方法:
我也可以使用 HttpContext.RewritePath
,例如在 Global.asax 的 Application_BeginRequest
中进行重写。
我觉得这“脱离了 MVC 上下文”,尽管它按预期工作。
我的问题:
是否有一种优雅的 MVC 集成方式来执行类似 RewriteToAction
的操作?
更新 1:
Luke commented一个有前途的链接:
我会尝试调查这是否符合我的需求。
最佳答案
怎么样
public ActionResult A(int id)
{
var uniqueID = CalculateUniqueFromId(id);
return B(uniqueID);
}
public ActionResult B(Guid uniqueID)
{
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
?
关于c# - 有类似 "RewriteToAction"的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43467215/