gpt4 book ai didi

asp.net-mvc - 树路径的asp.net mvc复杂路由

转载 作者:行者123 更新时间:2023-12-04 00:49:12 25 4
gpt4 key购买 nike

我想知道如何定义这样的路由映射:

{TreePath}/{Action}{Id} 

TreeMap 是从数据库动态加载的,如下所示:
 'Gallery/GalleryA/SubGalleryA/View/3'

最佳答案

您可以创建自定义路由处理程序来执行此操作。实际路线是一个包罗万象的:

routes.MapRoute(
"Tree",
"Tree/{*path}",
new { controller = "Tree", action = "Index" })
.RouteHandler = new TreeRouteHandler();

树处理程序查看路径,提取最后一部分作为操作,然后重定向到 Controller 。 Action 部分也从路径中删除。添加 {id} 部分应该很简单。
public class TreeRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string path = requestContext.RouteData.Values["path"] as string;

if (path != null)
{
int idx = path.LastIndexOf('/');
if (idx >= 0)
{
string actionName = path.Substring(idx+1);
if (actionName.Length > 0)
{
requestContext.RouteData.Values["action"] = actionName;
requestContext.RouteData.Values["path"] =
path.Substring(0, idx);
}
}
}

return new MvcHandler(requestContext);
}
}

然后您的 Controller 按您的预期工作:
public class TreeController : Controller
{
public ActionResult DoStuff(string path)
{
ViewData["path"] = path;
return View("Index");
}
}

现在你可以调用 URL 像 /Tree/Node1/Node2/Node3/DoStuff . action获取的路径是 Node1/Node2/Node3

关于asp.net-mvc - 树路径的asp.net mvc复杂路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023252/

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