ASP.NET MVC исходящая проблема соответствия маршрута, когда Используя ActionLink

Надежда на некоторую справку после чтения в маршрутизацию 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 прибывает из Модели. ContentId. ResourceId.

Все же ссылка привязки href представляется как "YourFeedback/Article/resourceId=101".

Какие-либо идеи, где я иду не так, как надо?

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

1
задан Godders 16 June 2010 в 09:48
поделиться

1 ответ

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

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

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

Или изменить маршрут.

2
ответ дан 2 September 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: