gpt4 book ai didi

asp.net - Url.Action 不使用所需的输出路径

转载 作者:行者123 更新时间:2023-12-02 17:00:09 26 4
gpt4 key购买 nike

我的 MVC3 网站中有以下路由定义:

routes.MapRoute(
"FB", // Route name
"fb/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
).RouteHandler = new RH();

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

我的自定义“RH”处理程序的代码是

public class RH : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
//here I store somewhere that 'fb' prefix is used, so logic is different in some places
return base.GetHttpHandler(requestContext);
}
}

我想要实现的目标是,当使用“fb”子路径前缀访问我的网站时,我的网站逻辑执行方式会略有不同。

问题是,当我正常访问我的网站时(例如 http://localhost ),那么当我执行时

Url.Action('action' 'controller')

,则输出为“http://localhost/fb/controller/action”。

我想实现,当使用“fb”前缀子路径访问我的网站时,我的 Url.Action 调用输出/fb/controller/action 路径,并且如果我正常访问网站(没有“fb”前缀子路径) ),然后 Url.Action 调用输出/controller/action

最重要的是,/fb/controller/actions 必须路由到与通过/controller/action 格式访问站点时相同的 Controller /操作。

当我使用“fb”前缀时,“fb”路由只需要存储一些临时信息。

最佳答案

似乎我找到了基于此链接( MVC 3 Routing and Action Links not following expected contextual Route )的解决方案,引入了新的路径占位符并添加了约束。

也许它不够好,或者你比这更了解,但似乎对我有用:

routes.MapRoute(
"FB", // Route name
"{path}/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { path = "fb" }
).RouteHandler = new RH();

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

关于asp.net - Url.Action 不使用所需的输出路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10155325/

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