全部,
掌握 ASP.NET MVC。到目前为止,一切都很好,但这一个有点疯狂。
我有一个包含超链接属性字典的视图模型,使用如下:
菜单 = 模型变量
Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), menu.Attributes, null)
问题是“menu.Attributes”的位置需要以下形式的对象:
new { Name = "Fred", Age=24 }
据我所知,这个匿名对象实际上是通过反射转换为字典但是你不能首先将字典传递给它!!!
为链接生成的 Html 仅显示字典类型。
我到底要如何绕过这个?关键是它的一般性和控制器可以设置 menu.Attributes 之前....
根据下面的帖子,我尝试了以下方法:
Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), new RouteValueDictionary(menu.Attributes), new Dictionary<string,object>())
但这仍然不起作用(我猜代码内部调用了接受对象的通用方法?)。以上(以及我将字典传递给第 4 个参数的原始解决方案会产生类似于以下内容的 HTML:
<a href="/EditRole?Comparer=System.Collections.Generic.GenericEqualityComparer%601%5BSystem.String%5D&Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.String%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.String%5D">EditDocumentRoles</a>
即它使用反射并且完全错误地解决问题......