我知道
因为我在这个主题上没有发现任何谷歌搜索结果,所以我可能完全试着解决一个XY问题。
尽管如此,我会尝试解释我为什么认为可能需要这样做。 情景:
在上面的代码中,操作A从整数计算出一个GUID并将其传递给另一个操作。
解决方法: 我可以将上述代码更改为以下内容:
RedirectToAction
,我正在寻找类似的方法来保持用户URL稳定,但仍然从一个操作传递责任到另一个操作。因为我在这个主题上没有发现任何谷歌搜索结果,所以我可能完全试着解决一个XY问题。
尽管如此,我会尝试解释我为什么认为可能需要这样做。 情景:
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);
}
在上面的代码中,操作A从整数计算出一个GUID并将其传递给另一个操作。
解决方法: 我可以将上述代码更改为以下内容:
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发表了有希望的评论链接如下:
我会尝试调查一下,看看是否符合我的需求。