ASP.NET MVC中的动态路由操作名称

用户987

我想创建到URL的动态路由,如下所示:

http://localhost:51577/Item/AnyActionName/Id

请注意,控制器名称是静态的,不需要动态。另一方面,我需要使动作名称部分具有动态性,以便无论在URL的那部分中写入什么内容,我都将用户重定向到控制器Index内部动作Item

到目前为止,我尝试过的是:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
        "Items",
        "Item/{action}/{id}",
        new { controller = "Item", action = "Index",  id = UrlParameter.Optional });
}

当我构建我的应用程序时,出现以下错误:

无法找到该资源。

编辑

这是我的Global.asax文件和routeconfig.cs文件:

public class MvcApplication : System.Web.HttpApplication
{

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

RouteConfig.cs是@Nkosi提供的答案文件内容

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Items",
            url: "Item/{id}/{*slug}",
            defaults: new { controller = "Item", action = "Index", slug = UrlParameter.Optional }
        );
    }
}
恩科西

您在问题中所指的是“弹头”。

我在这里针对Web API回答了类似的问题

Web API-如何使用子弹进行路由?

尾巴塞满之后,路由配置将如下所示

public static void RegisterRoutes(RouteCollection routes) {

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Items",
        url: "Item/{id}/{*slug}",
        defaults: new { controller = "Item", action = "Index", slug = RouteParameter.Optional }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

}

可以匹配示例控制器动作...

public class ItemController : Controller {
    public ActionResult Index(int id, string slug = null) {
        //...
    }
}

示例网址...

"Item/31223512/Any-Item-Name"

然后将参数匹配如下...

  • id = 31223512
  • slug = "Any-Item-Name"

并且由于该段是可选的,因此上述URL仍将与

"Item/31223512"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

隐藏来自ASP.NET MVC中的操作的路由值?

来自分类Dev

ASP.NET MVC路由-当操作名称和网址相同时重定向到路由

来自分类Dev

Asp.net MVC路由名称,带“-”

来自分类Dev

ASP.NET MVC路由与特定操作

来自分类Dev

ASP.NET MVC路由的操作前缀

来自分类Dev

Asp.net Web API的按操作名称路由路由

来自分类Dev

ASP.Net Core中的动态路由

来自分类Dev

在Asp.Net MVC中的路由中使用路由名称

来自分类Dev

ASP.NET MVC中的区域路由

来自分类Dev

asp.net MVC中的angularJS路由

来自分类Dev

在ASP.NET Web API 2中自动将操作名称设置为路由属性

来自分类Dev

ASP.NET MVC中动态类型的动态字段名称

来自分类Dev

如何在C#ASP.NET MVC3中为特定操作映射路由?

来自分类Dev

ASP.NET MVC路由-动态加载.js脚本

来自分类Dev

ASP.NET MVC 路由 - 添加站点名称?

来自分类Dev

在 asp.net mvc 中返回操作

来自分类Dev

ASP.net MVC路由

来自分类Dev

动态在 linq 中的位置,在操作中使用列表参数 asp.net mvc

来自分类Dev

Area的控制器操作中的自定义路由在ASP.NET MVC中不起作用

来自分类Dev

ASP.NET MVC5中的复杂路由

来自分类Dev

ASP.NET MVC中的静态文件路由

来自分类Dev

在ASP.NET MVC 5中路由可选参数

来自分类Dev

在asp.net MVC中更改路由URL

来自分类Dev

重写或更改asp.net MVC URL中的路由?

来自分类Dev

Asp.net Mvc路由。路线中的“ *”表示

来自分类Dev

在Asp.Net MVC4中路由

来自分类Dev

在asp.net mvc 4中更改路由的URL

来自分类Dev

在ASP.Net MVC 4中隐藏路由

来自分类Dev

在ASP.NET MVC中通过Slug进行路由