Asp.net mvc MVC 3-ActionLink
我在全局文件中使用RegisterRoutes方法将用户url路由到实际urlAsp.net mvc MVC 3-ActionLink,asp.net-mvc,model-view-controller,routes,Asp.net Mvc,Model View Controller,Routes,我在全局文件中使用RegisterRoutes方法将用户url路由到实际url routes.MapRoute("Blog", "blog/dp/{id}", new { controller ="Blog", action = "Details" }); 正如您可能已经猜到的,Blog是控制器,Details是其操作 所以问题是下面的代码没有生成我的愿望URL,它的URL中有dp单词。 顺便说一下,我不想改变我的动作名称
routes.MapRoute("Blog",
"blog/dp/{id}",
new { controller ="Blog", action = "Details" });
正如您可能已经猜到的,Blog是控制器,Details是其操作
所以问题是下面的代码没有生成我的愿望URL,它的URL中有dp单词。
顺便说一下,我不想改变我的动作名称
@Html.ActionLink( "headline", "Details", "Blog", new { id="1200" }, null )
提前感谢;) ActionLink使用的路径可能与您在问题中提供的路径不同。在这之前你们有没有公布路线 这些路由将按照您提供它们的顺序进行匹配。举个例子,如果你有这样的东西:
routes.MapRoute("Blog",
"blog/dp", // {id} is not provided in this one
new { controller ="Blog", action = "Details" });
在此路线之前宣布:
routes.MapRoute("Blog",
"blog/dp/{id}",
new { controller ="Blog", action = "Details" });
第一个路由将首先匹配,您将看到/blog/dp/?id=1200而不是/blog/dp/1200。您可以使用RouteLink而不是ActionLink。在RouteLink中,您可以显式传递路由名称:
@Html.RouteLink("headline", "Blog", new { controller = "Blog", action = "Details" })
有关RouteLink方法的更多信息,请参阅。重新排序路由可以完成这项工作,但这是一个相当脆弱的机制。url路由正确吗?如果您输入url
http://site/blog/dp/1200
它是否路由到正确的页面?你有没有其他路线映射到同一个控制器?在问题中包含所有路线可能会有所帮助。是的,它会路线到正确的页面;)我的问题是actionlink生成此“”谢谢您的回答,但我的MapRoutes工作正常,我的问题是actionlink不能用于上述场景。顺便说一句,我知道我可以使用tag绕过此问题。