MVC 2: Ajax.Перенаправление ActionLink на новую страницу, когда у вызывающего абонента определен MapRoute

#ajax #asp.net-mvc-2

#ajax #asp.net-mvc-2

Вопрос:

все работает нормально, пока я не определил карту маршрута для страницы с AJAX.

Контроллер

   public ActionResult SessionDetails(int id, int collectionId, int sessionId) {
    var model = new LegalActsListViewModel();
    model.Setup(id, collectionId, sessionId, ApplicationContext.SessionService);
    return PartialView("LegalActsListControl", model);
    }
  

Вид

 <%: Ajax.ActionLink(session.Name, "SessionDetails", "Institution", new { id = Model.InstitutionId, collectionId = Model.CollectionId, sessionId = session.Id }, new AjaxOptions { UpdateTargetId = "session_"   session.Id, OnSuccess = "updatePlaceholder", HttpMethod = "Post", InsertionMode = InsertionMode.Replace })%>
  

Это выше работает с картой маршрутов по умолчанию. На данный момент я добавил карту маршрутов, как показано ниже:

 routes.MapRoute("Institution_Collection_Terms", 
    "institution/{id}/collection/{collectionId}/terms", 
    new { controller = "Institution", action = "Terms" }, 
    new { id = @"d ", collectionId = @"d " });
  

PartialResult перенаправляется на:

  http://localhost:9085/Institution/SessionDetails/850?collectionId=22184amp;sessionId=77
  

Вот все маршруты:

 routes.MapRoute("Institution_Collection_Keywords",
            "institution/{id}/collection/{collectionId}/keywords",
            new { controller = "Institution", action = "Keywords" },
            new { id = @"d ", collectionId = @"d " });
        //routes.MapRoute("Institution_Collection_Terms",
        //    "institution/{id}/collection/{collectionId}/terms",
        //    new { controller = "Institution", action = "Terms" },
        //    new { id = @"d ", collectionId = @"d " });
        routes.MapRoute("Institution_Collection_Yearbooks",
            "institution/{id}/collection/{collectionId}/yearbooks",
            new { controller = "Institution", action = "Yearbooks" },
            new { id = @"d ", collectionId = @"d " });
        routes.MapRoute("Institution_Collection_YearbookDetails",
            "institution/{Id}/collection/{collectionId}/yearbook/{year}/{month}",
            new { controller = "Institution", action = "YearbookList", month = UrlParameter.Optional },
            new { Id = @"d ", collectionId = @"d ", year = @"^(19|20)d{2}$" });
        routes.MapRoute("Institution_Collection_List",
            "institution/{id}/collection/{collectionId}/list",
            new { controller = "Institution", action = "List" },
            new { id = @"d ", collectionId = @"d " });
        routes.MapRoute("Institution_Collection_KeywordDetails",
            "institution/{id}/collection/{collectionId}/keyword/{keywordId}",
            new { controller = "Institution", action = "KeywordDetails" },
            new { id = @"d ", keywordId = @"d ", collectionId = @"d " });
        //routes.MapRoute("Institution_Collection_TermsDetails", 
        //    "institution/{id}/collection/{collectionId}/session/{sessionId}/details", 
        //    new { controller = "Institution", action = "SessionDetails" }, 
        //    new { id = @"d ", sessionId = @"d ", collectionId = @"d " });

        routes.MapRoute("Institution_SearchLegalActs",
            "institution/{institutionId}/searchlegalacts",
            new { controller = "Institution", action = "SearchLegalActs" },
            new { institutionId = @"d " });
        routes.MapRoute("Institution_Keywords",
            "institution/{id}/keywords",
            new { controller = "Institution", action = "Keywords" },
            new { id = @"d " });
        routes.MapRoute("Institution_KeywordDetails",
            "institution/{id}/keyword/{keywordId}",
            new { controller = "Institution", action = "KeywordDetails" },
            new { id = @"d ", keywordId = @"d " });
        routes.MapRoute("Institution_Yearbooks",
            "institution/{id}/yearbooks",
            new { controller = "Institution", action = "Yearbooks" },
            new { id = @"d " });
        routes.MapRoute("Institution_YearbookDetails",
            "institution/{Id}/yearbook/{year}/{month}",
            new { controller = "Institution", action = "YearbookList", month = UrlParameter.Optional },
            new { Id = @"d ", year = @"^(19|20)d{2}$" });
        routes.MapRoute("Institution_List",
            "institution/{id}/list",
            new { controller = "Institution", action = "List" },
            new { id = @"d " });
        routes.MapRoute("Institution_RecentAdded",
            "institution/{id}/recentadded",
            new { controller = "Institution", action = "RecentAdded" },
            new { id = @"d " });
        routes.MapRoute("Institution_MostPopular",
            "institution/{id}/mostpopular",
            new { controller = "Institution", action = "MostPopular" },
            new { id = @"d " });
        routes.MapRoute("Institution_Default",
            "institution/{id}",
            new { controller = "Institution", action = "Keywords" });

        routes.MapRoute("Home_LegalActs",
            "legalacts",
            new { controller = "Home", action = "LegalActs" });
        routes.MapRoute("Home_Institutions",
            "institutions",
            new { controller = "Home", action = "Institutions" });
        routes.MapRoute("Home_Voivodeship",
            "voivodeship/{voivodeship}",
            new { controller = "Home", action = "Voivodeship" });
        routes.MapRoute("Home_Journals",
            "journals/{view}",
            new { controller = "Home", action = "Journals" });
        routes.MapRoute("Home",
            "{controller}",
            new { controller = "Home", action = "Index" });

        routes.MapRoute("Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional });
  

Заранее спасибо,
Лешек

Комментарии:

1. Где вы добавили этот маршрут? До или после значения по умолчанию?

2. Все значения по умолчанию приведены ниже.