Asp.net 将url转换为路由
我觉得我正在重新发明轮子,但我需要找到一种方法,从catchall中获取URL,并将其重定向到另一条路径 这是因为我需要做一些事情,比如为某些URL添加会话cookie,然后将它们传递给相关的操作 实现这一点的最佳方式是什么Asp.net 将url转换为路由,asp.net,asp.net-mvc,routing,Asp.net,Asp.net Mvc,Routing,我觉得我正在重新发明轮子,但我需要找到一种方法,从catchall中获取URL,并将其重定向到另一条路径 这是因为我需要做一些事情,比如为某些URL添加会话cookie,然后将它们传递给相关的操作 实现这一点的最佳方式是什么 提前感谢您的帮助 如果我理解这个问题 查看您的上一个问题(),您希望从以下位置获取通配符: routes.MapRoute( "Partner", "partners/{partner}/{*wildcard}", new { controller
提前感谢您的帮助 如果我理解这个问题 查看您的上一个问题(),您希望从以下位置获取通配符:
routes.MapRoute(
"Partner",
"partners/{partner}/{*wildcard}",
new { controller = "Partners", action = "PartnerRedirect" }
);
在Partners/PartnerRedirect操作中,将其发送到通配符中指定的正确控制器/操作
我不知道最好的方法是什么,但看看单元测试url路由的方法,我发现:
我不确定它是否完全合适(即,可能不需要模拟东西),但看起来所有数据都是从GetRoutedData返回的,并传递给RedirectToAction方法。哦,那么你不想重定向了?您希望URL保持不变: mysite.com/partners/pepsi/products/cola.htm 但请提供: mysite.com/products/cola.htm 我家里没有MVC,但是你不能用不同的方式定义你的路线吗 而不是:
routes.MapRoute(
"Partner",
"partners/{partner}/{*wildcard}",
new { controller = "Partners", action = "PartnerRedirect" }
);
做:
该操作现在有了partner变量来执行任何操作,您可以向partner添加路由约束,以便只有有效的约束匹配
(我认为)然后,您可以在您的操作/控制器上使用操作过滤器,根据partner参数执行适当的操作(我认为它应该在过滤器的httpcontext中!),这样,如果您想对partner执行一些基本检查/操作,就不必在每个操作中重复代码
下面是一篇关于剥猫皮的很多方法的文章:
不,它实际上是一个重定向,但用户看不到该重定向(与服务器的方式大致相同)。Transfer()是在Web表单中完成的 您指向的链接只使用一个母版页,而我有许多母版页(接近200) 我曾想过为这些合作伙伴提供单独的路由处理程序,但母版页的选择已进入平衡
我想我必须创建一个ViewExtension来克服这些问题…您可以尝试在运行时更改母版页。尽管这不是最漂亮的解决方案
也许可以让母版页根据partner参数呈现用户控件?听起来不太干净。我以前没有读过视图扩展,因此无法发表评论。
routes.MapRoute(
"Partner",
"partners/{partner}/{controller}/{action}/{other stuff you need}",
new { /* whatever defaults you want */ }
);