Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC 3-ActionLink_Asp.net Mvc_Model View Controller_Routes - Fatal编程技术网

Asp.net mvc MVC 3-ActionLink

Asp.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单词。 顺便说一下,我不想改变我的动作名称

我在全局文件中使用RegisterRoutes方法将用户url路由到实际url

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绕过此问题。