ASP.NET MVC Несколько маршрутов и неверное значение словаря маршрутов - PullRequest
0 голосов
/ 20 ноября 2011

У меня есть несколько маршрутов для отображения подробной информации о магазине и информации о продукте. он определен на Global.asax как следующий

routes.MapRoute("DetailProduct",
    "{controller}/{action}/{ProductGUID}/{CategoryGUID}/{StoreGUID}/{UserID}",
            new {
                controller = "Home", action = "DetailProducts",
                  ProductGUID = UrlParameter.Optional,
                  CategoryGUID = UrlParameter.Optional,
                  UserID = UrlParameter.Optional,

            });

routes.MapRoute("StoreInfo",  "{controller}/{action}/{StoreGUID}/{StoreCountryLocation}/{StoreName}/{StoreUserID}",
       new
       {
           controller = "Home",
           action = "DetailStore",
           StoreGUID = UrlParameter.Optional,
           StoreCountryLocation = UrlParameter.Optional,
           StoreName = UrlParameter.Optional,
           StoreUserID = UrlParameter.Optional
       }
       ); 

следующие гиперссылки определены в файле ASPX для выполнения этих маршрутов сопоставления StoreInfo и DetailProduct.

Storeinfo

 <a href=<%: Url.RouteUrl("StoreInfo", new RouteValueDictionary(new { Controller = "Home", Action = "DetailStore", StoreGUID = itemList.StoreGUID, StoreCountryLocation = itemList.Country, StoreName = itemList.StoreName, StoreUserID = itemList.UserID }))%>>                                                                 
</a>

Деталь продукта

<a href=<%= Url.RouteUrl("DetailProduct", new RouteValueDictionary( new { controller="Home",action="DetailProducts",ProductGUID=itemList.productGUID,CategoryGUID=itemList.CategoryGUID,UserID=itemList.UserID,StoreGUID=itemList.StoreGUID})) %>> </a>

Тем не менее, когда нажата гиперссылка storeinfo , вместо словаря значений маршрута storeinfo указываются подробные значения словаря маршрута продукта

?RouteData.Values.Keys  
Count = 6
    [0]: "controller"
    [1]: "action"
    [2]: "ProductGUID"
    [3]: "CategoryGUID"
    [4]: "StoreGUID"
    [5]: "UserID"

Не могли бы вы посоветовать?

1 Ответ

0 голосов
/ 24 октября 2012

Я уверен, что вы получаете конфликты в ваших параметрах. Потому что вы пометили все как необязательное, и даже контроллер и действие являются «динамическими».

Похоже, что вы нацелены на фиксированные действия, поэтому вы можете делать свои картографические маршруты следующим образом:

routes.MapRoute("DetailProduct",
"Home/DetailsProducts/{ProductGUID}/{CategoryGUID}/{StoreGUID}/{UserID}",
        new {
              ProductGUID = UrlParameter.Optional,
              CategoryGUID = UrlParameter.Optional,
              UserID = UrlParameter.Optional,

        });

routes.MapRoute("StoreInfo",  "Home/DetailStore/{StoreGUID}/{StoreCountryLocation}/{StoreName}/{StoreUserID}",
   new
   {
       StoreGUID = UrlParameter.Optional,
       StoreCountryLocation = UrlParameter.Optional,
       StoreName = UrlParameter.Optional,
       StoreUserID = UrlParameter.Optional
   }
   ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...