HTML.ActionLink()生成错误的URL

时间:2011-11-14 19:52:29

标签: asp.net asp.net-mvc razor url-routing

我很难获得HTML.ActionLink()创建正确的链接。

当我在 http://localhost:49242/

我的选择是:

但是当我导航到http://localhost:49242/en-us/PinnedSites时,我的选择是:

当然,所有这些网址都失败了。

这是我的html:

.cshtml(Html / razor)

<li id="nav_pinning">
    @Html.ActionLink( "pinned sites", "index", "PinnedSites")</li>
<li id="nav_addons">
    @Html.ActionLink("add-ons", "index", "addons")</li>
<li id="nav_control">
    @Html.ActionLink("tracking protection lists", 
                    "index", 
                    "trackingprotectionlists",
                    null,
                    null)</li>

的Global.asax.cs

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("favicon.ico");
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Default", // Route name
            "{culture}/{controller}/{action}", 
            new { culture = "en-us", 
                controller = "Home", 
                action = "Index", 
            }
        );
    }

我的问题在哪里?是否有可能/ PinnedSites /实际上没有进入PinnedSitesController?

(我将积极关注此事,如果您希望我尝试或提供更多代码,请发表评论。)

1 个答案:

答案 0 :(得分:2)

您是否将HomeController作为项目的一部分?如果是这样,你应该按照以下方式注册默认控制器:

 routes.MapRoute(
         "Default", // Route name
         "{controller}/{action}/{id}", // URL with parameters
         new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

但是,除此之外,您是否尝试过将Route直接连接到PinnedSites控制器?

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("favicon.ico");
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Default", // Route name
            "{culture}/{controller}/{action}", 
            new { culture = "en-us", 
                controller = "PinnedSites", 
                action = "Index", 
            }
        );
    }