首页 > 解决方案 > ASP.NET CORE MVC 路由:尝试在 asp-all-route-data 中传递字典

问题描述

所以我有一个我试图传递给另一条路线的对象。

在我的 index.cshtml 中,我正在创建要发送的字典对象:

                    @{
                        var data = new Dictionary<string , ProductToCart>
                        {
                            {"item",  Model }
                         };
                    }

我也有链接标签(在这个视图中)与 asp-all-route-data 以将我的字典传递给如下:

  <a asp-controller="Cart" asp-action="AddToCart" asp-route="productData" asp-all-route-data="data" class="btn btn-lg btn-outline-primary text-uppercase"> <i class="fas fa-shopping-cart"></i> Add to cart </a>

我收到以下错误:

错误 CS0266 无法将类型“System.Collections.Generic.Dictionary<string, eComStore.Models.ProductToCart>”隐式转换为“System.Collections.Generic.IDictionary<string, string>”。存在显式转换(您是否缺少演员表?)

问:如何转换这个字典,它是通过 ASP.NET CORE MVC 中的路由传递字典/复杂对象的正确方法?

标签: c#asp.netdictionaryasp.net-core.net-core

解决方案


它不能以默认方式处理复杂类型。您应该创建自己的自定义标签助手。

本文可能会帮助您了解有关标签助手的更多信息,以及如何创建自己的自定义标签助手。


推荐阅读