Проблема соответствия исходящего маршрута ASP.Net MVC при использовании ActionLink - PullRequest
1 голос
/ 16 июня 2010

Надеюсь на некоторую помощь после прочтения маршрутизации MVC и не придумать ответ сам.

У меня зарегистрированы следующие маршруты:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            null,
            "YourFeedback/Article/{resourceId}",
            new { controller = "YourFeedback", action = "Index", contentTypeId = new Guid(ConfigurationManager.AppSettings["ArticleLibraryId"]) });

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

У меня есть следующее ActionLink в представлении aspx:

<%=Html.ActionLink("Your Feedback", "Article", "YourFeedback", new
 {
     resourceId = Model.ContentId.ResourceId
 }, new { @class = "yourFeedback" })%>

Мое понимание маршрутизации MVC заключается в том, что при этом будет отображаться якорная ссылка с href "/ YourFeedback / Article / 101", где 101 происходит от Model.ContentId.ResourceId.

Тем не менее, якорная ссылка href отображается как "YourFeedback / Article / resourceId = 101".

Есть идеи, где я иду не так?

Заранее спасибо.

1 Ответ

2 голосов
/ 16 июня 2010

Это потому, что ваша actionlink будет соответствовать второму маршруту, а не первому.Причина в том, что у вас есть некоторые странные значения по умолчанию в вашем первом маршруте.Вы установили контроллер на «YourFeedback», а действие - «Индекс».Это означает, что вам нужно будет установить это и в вашей ссылке для действий, если вы хотите соответствовать этому маршруту.

Для соответствия маршруту вам нужно будет использовать эту ссылку для действий:

<%=Html.ActionLink("Your Feedback", "Index", "YourFeedback", new
{
    resourceId = Model.ContentId.ResourceId
}, new { @class = "yourFeedback" })%>

сменить маршрут.

...