C# 如何重定向到传递URL参数的控制器/操作?
我试图在我的aspnetcore应用程序中实现“returnUrl”功能,但我正在努力寻找一种方法来动态地将参数传递给操作 流程如下所示:C# 如何重定向到传递URL参数的控制器/操作?,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我试图在我的aspnetcore应用程序中实现“returnUrl”功能,但我正在努力寻找一种方法来动态地将参数传递给操作 流程如下所示: return Redirect("/" + reRoute); 用户已将URLhttps://localhost:44358/Secure/VisualizationFiles?viz=vizFilePlays 网站检查他们是否已登录,如果未登录,则将他们重定向到主页控制器的登录操作以登录(传递返回URL) 登录后,用户将重定向到上面
return Redirect("/" + reRoute);
https://localhost:44358/Secure/VisualizationFiles?viz=vizFilePlays
登录
操作以登录(传递返回URL)actionfilteratAttribute
拦截传入的HTTP请求并确保控制器安全;操作和参数作为returnUrl传递(或者在这种情况下为reRoute
)
公共类NimsAuthenticationAttribute:ActionFilterAttribute
{
公共覆盖无效OnActionExecuting(ActionExecutingContext filterContext)
{
变量url=filterContext.RoutedData.Values[“Controller”]+“/”+filterContext.RoutedData.Values[“Action”]+“?”+QueryString(filterContext.ActionArguments);
filterContext.Result=新的RedirectToRouteResult(新的RouteValueDictionary{{{“控制器”,“主页”},{“操作”,“索引”},{“重新路由”,url});
base.OnActionExecuting(filterContext);
}
专用字符串查询字符串(IDictionary dict)
{
var list=新列表();
foreach(dict中的var项目)
{
列表.添加(item.Key+“=”+item.Value);
}
返回字符串。Join(“&”,list);
}
}
在用户被重定向(从安全控制器)到主控制器后,我们将获得传递的完整returnUrl
(即重新路由
URL)
正如您所看到的,现在我正在做一些容易出错的字符串操作来提取控制器
<代码>操作和url参数
来自重路由
字符串。我想知道:
- 有什么方法可以将整个
url传递到重新路由
重定向
- 如果上述方法不可行,是否有其他方法处理重定向,使其成为动态的(即url参数以及控制器和操作将不同)
重定向到操作
所以在你的情况下,它看起来是这样的:
return Redirect("/" + reRoute);
/
可以转到根url,否则请求将相对于当前控制器进行路由。使用时会发生什么情况(而不是重定向到操作
)使用重新路由
作为参数?我确实尝试过,但这使aspnetcore成为我试图重定向到同一控制器中操作的对象-https://localhost:44358/Home/Secure/VisualizationFiles?viz=vizFilePlays
您可以尝试返回重定向(“/”+重新路由)代码>?/
应使其使用根url。@jayBridge有效!:我不敢相信事情会这么简单。非常感谢你!请添加作为答案,我将接受您的意见作为解决方案。