是否有类似于“RewriteToAction”的东西?(涉及IT技术)

6
我知道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发表了有希望的评论链接如下:

如何在ASP.NET MVC中模拟Server.Transfer?

我会尝试调查一下,看看是否符合我的需求。


2
这些链接是否能够满足您的需求呢?https://dev59.com/M3RA5IYBdhLWcg3w2x6W#1180744 或 https://dev59.com/M3RA5IYBdhLWcg3w2x6W#1242525 - Luke
看起来非常有前途,@Luke,我会好好看看的,非常感谢。 - Uwe Keim
1
祝你好运,我的朋友!:o) - Luke
1个回答

2

请问如何

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);
}

?


只需调用操作方法。看起来很整洁。谢谢! - Uwe Keim
1
欢迎。如果对您有帮助,请接受答案好吗?谢谢。 - NP3
当然!我将尝试再等几天,以便可能得到另一个反馈。 - Uwe Keim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接