Dictionary ASP.NET MVC多个路由和无效的路由字典值

Dictionary ASP.NET MVC多个路由和无效的路由字典值,dictionary,routes,Dictionary,Routes,我有多个路径来显示有关商店和产品信息的详细信息。它在Global.asax上的定义如下 routes.MapRoute("DetailProduct", "{controller}/{action}/{ProductGUID}/{CategoryGUID}/{StoreGUID}/{UserID}", new { controller = "Home", action = "DetailProducts",

我有多个路径来显示有关商店和产品信息的详细信息。它在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>

您能提供建议吗?

我很确定您的参数中存在冲突。因为您已将所有内容标记为可选,甚至控制器和操作都是“动态”的

看起来您的目标是固定操作,因此您可以像这样执行maproutes:

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
   }
   ); 

删除星号,它们不应用粗体。detailProduct路由的字典中没有storeguid。达拉斯,很抱歉忘记将storeguid放入字典中。问题仍然存在。
?RouteData.Values.Keys  
Count = 6
    [0]: "controller"
    [1]: "action"
    [2]: "ProductGUID"
    [3]: "CategoryGUID"
    [4]: "StoreGUID"
    [5]: "UserID"
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
   }
   );