Asp.net mvc 自定义路由在MVC中不起作用
我正在创建一个友好的URL,所以我在routeconfig文件中创建了一个路由,如下所示Asp.net mvc 自定义路由在MVC中不起作用,asp.net-mvc,Asp.net Mvc,我正在创建一个友好的URL,所以我在routeconfig文件中创建了一个路由,如下所示 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controlle
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Auth", action = "LogIn", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ShowUser", // Route name
url: "{controller}/{action}/{id}", // URL with parameters
defaults: new { controller = "UserGroupEdit", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
<a href="@Url.Action( "Index", "ShowUser")" onclick="javascript:onBegin()">View</a>
和行动链接如下
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Auth", action = "LogIn", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ShowUser", // Route name
url: "{controller}/{action}/{id}", // URL with parameters
defaults: new { controller = "UserGroupEdit", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
<a href="@Url.Action( "Index", "ShowUser")" onclick="javascript:onBegin()">View</a>
但如果出现运行时错误“找不到资源”,则无法正常工作。默认路由和自定义路由具有相同的结构,因此将始终使用默认路由,因为它是先声明的。 我猜您会遇到错误,因为在代码中您指的是ShowUser,但您应该使用控制器的名称:UserGroupEdit
<a href="@Url.Action( "Index", "UserGroupEdit")" onclick="javascript:onBegin()">View</a>
如果你想要一条友好的路线,你可以这样做
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "ShowUser", // Route name
url: "ShowUser/index/{id}", // URL with parameters
defaults: new { controller = "UserGroupEdit", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Auth", action = "LogIn", id = UrlParameter.Optional }
);
}
在您的cshtml
@Url.Action( "Index", "UserGroupEdit")
您可以使用
UrlHelper.RouteUrl
helper方法,该方法允许您指定路由名称:
<a href="@Url.RouteUrl("ShowUser", new { action = "Index" })" onclick="javascript:onBegin()">View</a>
参考您遇到了什么错误?“/”应用程序中的服务器错误。找不到资源。描述:HTTP404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下URL并确保其拼写正确。请求的URL:/ShowUser/IndexDefault路由应该可以工作,即使您访问自定义路由的方式不正确。确保
RouteConfig.RegisterRoutes(RouteTable.Routes)代码>位于应用程序启动事件中。您可以展示控制器和操作方法吗?以下是名称“UserGroupEditController”行动是Index@C.jacking回答是否回答了您的问题?没有。实际上,我的要求是在URL栏中提供用户友好的URL而不是UserGroupEdit/Index。它必须在栏中显示ShowUser/Index。@C.jacking请参见上面的回答以获取解决方案您可以使用Route属性:place[Route(“ShowUser”)]对于想要的操作和as链接,使用@OgnjenBabic建议看起来不错,但仍然不起作用。找不到资源。描述:HTTP 404否实际上我的要求是在URL栏中提供用户友好的URL而不是UserGroupEdit/Index,它必须在栏中显示ShowUser/Index。如果我提供的URL选项显示“ShowUser/Index”如果我重命名控制器名称,那么我需要在多个位置进行更改,这就是为什么我使用自定义URL更新了应答器,但应答器仍然不工作。它正在“/”应用程序中生成“”和错误加载页面“服务器错误。找不到资源。”请按上面所示更新routeconfig。您还可以使用Route
属性来实现您要查找的内容。看看@Win的答案