gpt4 book ai didi

c# - 重定向到 ASP CORE 中的 URL

转载 作者:行者123 更新时间:2023-11-30 14:25:05 25 4
gpt4 key购买 nike

我在重定向到应用程序中的另一个 Controller 和操作时遇到问题。

我的重定向操作看起来像:

    public IActionResult Redirect(NotificationItemViewModel model)
{
NotificationItemToggleReadCommand command = new NotificationItemToggleReadCommand();
command.Id = new EntityId(model.Id);
command.MarkAsRead = true;


var result = CommandProcessor.Run(command);
RedirectResult redirectResult = new RedirectResult(model.Subject.Url,true);
return redirectResult;
}

我的 model.Subject.Url 例如采用这种格式:Identity/User#/Details/b868b08c-b3ba-4f45-a7b6-deb02440d42f

是area/controller/action/id。问题是我的 RedirectResult 将我重定向到:

notifications/Identity/User#/Details/b868b08c-b3ba-4f45-a7b6-deb02440d42f 

并且该路线不存在( Controller /区域/ Controller / Action /ID)如何强制此重定向切断第一个此 Controller 名称?

我的路线:

    app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action=Index}/{id?}");

routes.MapRoute(
name: "controllerActionRoute",
template: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" },
constraints: null,
dataTokens: new { NameSpace = "default" });

routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}

感谢您的帮助。

最佳答案

如果我正确理解你的问题,那是因为你在通知区域(其他一些区域)并试图移出该区域。

为此,您可以执行以下任一操作。

  1. 请在 RedirectResult 中提供绝对 url,而不是提供相对 url。现在的问题是,当应用程序触发重定向时,它会考虑相对 URL,这就是问题所在。

  2. 第二种解决方案是使用 RedirectToActionResult 而不是 RedirectResult。

     RedirectToActionResult redirectResult = new RedirectToActionResult("Details", "User", new { @area = "Identity", @Id = "b868b08c-b3ba-4f45-a7b6-deb02440d42f" });
    return redirectResult;

在上面,我假设区域名称是“Identity”, Controller 名称是“User”,操作是“Details”。 Action 有一个名为“Id”的参数。您可以根据您的要求进行更改。在此您不必构造绝对 url。

更新 1

如果我假设您总是必须在开始时执行 root 并忽略“通知”。

至少你可以提供这样的Url。

~/Identity/User#/Details/b868b08c-b3ba-4f45-a7b6-deb02440d42f

关于c# - 重定向到 ASP CORE 中的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39677244/

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