gpt4 book ai didi

asp.net-mvc - asp.net mvc路由问题

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

默认路由工作正常

mysite.com/home/about

我什至看到如何自定义它以使其更短

所以我可以说:

mysite.com/edit/1代替mysite.com/home/edit/1

但是我怎样才能让它像下面这样处理 url 更长的时间

mysite.com/admin/user/1//有效

mysite.com/admin/user/details//不起作用

mysite.com/admin/question/create//不起作用

我不能只把 id 当作一个 Action 吗?我需要自定义路线?

我需要为每个表创建新的 Controller 还是可以通过 Admin Controller 路由它们

非常感谢

最佳答案

如前所述,最好的选择可能是使用新的 Areas特征

您可以在没有区域的情况下实现这种类型的路由,但是随着 Controller 数量的增加,您站点的可维护性将会降低。本质上,您所做的是将 Controller 名称硬编码到路由定义中,这意味着您必须为每个新的管理 Controller 添加新的路由映射。以下是您可能希望如何设置没有区域的路线的几个示例。

routes.MapRoute("AdminQuestions", // Route name
"admin/question/{action}/{id}", // URL with parameters
new { controller = "AdminQuestion", action = "Index" } // Parameter defaults
);

routes.MapRoute("AdminUsers", // Route name
"admin/user/{action}/{id}", // URL with parameters
new { controller = "AdminUser", action = "Index" } // Parameter defaults
);

或者,您可以通过 Admin Controller 路由所有内容,但它会很快变得非常困惑,因为您的 Controller 操作执行多个角色。

routes.MapRoute("Admin", // Route name
"admin/{action}/{type}/{id}", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);

您的 AdminController 操作看起来像:

public virtual ActionResult Create(string type, int id)
{
switch (type)
{
case 'question':
// switch/case is code smell
break;
case 'user':
// switch/case is code smell
break;
// etc
}
}

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

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