HTML.ActionLink () генерирует неправильные URL - PullRequest
3 голосов
/ 14 ноября 2011

У меня проблемы с получением HTML.ActionLink () для создания правильных ссылок.

Когда я нахожусь на http://localhost:49242/

Мои варианты:

Но когда я перехожу к http://localhost:49242/en-us/PinnedSites, мои варианты:

Все эти URL не работают, конечно.

Вот мой 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 Ответ

2 голосов
/ 15 ноября 2011

Есть ли у вас HomeController как часть вашего проекта? Если это так, вы должны зарегистрировать контроллер по умолчанию следующим образом:

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

Однако, кроме этого, вы пытались просто сделать Маршрут непосредственно к вашему контроллеру 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", 
            }
        );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...