Asp.net mvc 4 Asp.Net MVC路由在Url中传递控制器
我试着写自定义路由。我总是有404错误。我读了关于路由的文章,但没有弄明白。我想显示以下代码和名称等内容,它们必须介于a-Z和0-9之间。谢谢Asp.net mvc 4 Asp.Net MVC路由在Url中传递控制器,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我试着写自定义路由。我总是有404错误。我读了关于路由的文章,但没有弄明白。我想显示以下代码和名称等内容,它们必须介于a-Z和0-9之间。谢谢 {action}/{name}/details/kll219dkl routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "hom
{action}/{name}/details/kll219dkl
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "home", action = "index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "test",
url: "details/{name}",
defaults: new { controller = "Test", action = "Details", name = "ujElk392ow" }
);
而仅仅是为了证明这是有效的
public ActionResult Details(string name)
{
return Content(name);
}
那么:
routes.MapRoute(
name: "test",
url: "{controller}/details/{name}",
defaults: new { controller = "Test", action = "Details", name = String.Empty },
constraints: new { name = @"^[a-zA-Z0-9]+$" }
);
这将给你:
Url: Mapped Destination:
/Test/details/kll219dkl TextController->Details(name: "kll219dkl")
除了布拉德回答。尝试更改路线的顺序。运行时采用适合请求的第一条路由。因此,路线必须从最确定的到最一般的定义。在您的订单中,运行时将始终采用默认路径。谢谢您的回复,看起来不错。当我测试控制器/动作/参数工作但我不想显示控制器名称时,只显示动作/参数或控制器/参数动作总是常量。@显示:它总是同一个控制器吗?如果是这样,请从
url:
参数中删除{controller}/
部分,并保留默认值:
。请您可以编写我尝试过的控制器/参数或操作/参数路线图,但仍然不起作用。假设TestController{Details(name)}
只需从我的答案中删除{controller}//code>,然后访问details/kll219dkl
。谢谢brad,我确实放弃了这个问题。这个问题对我不适用,我使用的是默认路线图。也许将来我会做这个。