gpt4 book ai didi

c# - 有类似 "RewriteToAction"的东西吗?

转载 作者:太空狗 更新时间:2023-10-29 23:36:35 24 4
gpt4 key购买 nike

知道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一个有前途的链接:

How to simulate Server.Transfer in ASP.NET MVC?

我会尝试调查这是否符合我的需求。

最佳答案

怎么样

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com