gpt4 book ai didi

asp.net - 将路由值字典传递给 ActionLink

转载 作者:行者123 更新时间:2023-12-04 14:36:14 27 4
gpt4 key购买 nike

全部,

掌握 ASP.NET MVC。到目前为止,一切都很好,但这个有点疯狂。

我有一个包含超链接属性字典的 View 模型,使用如下:

菜单 = 模型变量

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 仅显示字典类型。

我到底怎么解决这个问题?重点是它的通用性和 Controller 之前可以设置 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&amp;Count=1&amp;Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.String%5D&amp;Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.String%5D">EditDocumentRoles</a>

即它正在使用反射并解决完全错误的事情......

最佳答案

关于如何修复的建议在 MVC3 中对我有用。用法示例:

IDictionary<string, object> routeValues = new Dictionary<string, object>();

routeValues.Add("EmployeeID", 1);

@Html.ActionLink("Employee Details", "EmployeeDetails", "Employee", new RouteValueDictionary(routeValues), null);

关于asp.net - 将路由值字典传递给 ActionLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2439698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com