2012-02-08 204 views
19

我试图附加属性数据图标添加到我的行动链接声明,但我发现了以下错误:无效的匿名类型成员声明。匿名类型的成员必须有一个成员赋值,简单名称或成员访问

无效的匿名类型成员声明。匿名类型成员必须使用成员分配,简单名称或成员访问来声明 。

作品:

@Html.ActionLink("Profile", "Details", "Profile", new { id = 11 }, 
      new { @rel = "external", @id = "btnProfile" }) 

例外:

@Html.ActionLink("Profile", "Details", "Profile", new { id = 11 }, 
      new { @rel = "external", @id = "btnProfile", @data-icon = "gear" }) 
+8

,而不是'@数据icon'使用'@ data_icon' – xandercoded 2012-02-08 16:01:27

+0

给出了同样的异常 – Eugene 2012-02-08 16:13:42

回答

24

UPDATE:从上面Xander的注释,使用data_icon = "gear"

呦u能到位HTML匿名对象的使用IDictionary<string, object>属性:

@Html.ActionLink("Profile", "Details", "Profile", new { id = 11 } 
    , new Dictionary<string, object> 
    { 
     { "rel", "external" }, 
     { "id", "btnProfile" }, 
     { "data-icon", "gear" }, 
    }) 

看到这个过载:http://msdn.microsoft.com/en-us/library/dd504988.aspx

您所使用的助手是创建词典的一种简便方法,但幕后无论如何,该字典是创建。

+3

当我做到这一点,它呈现像链接: 'Log Off' – xdumaine 2012-08-30 22:04:46

+0

我有这个问题,在我的参数(一个类过滤器与我想通过一个成员的期间/点),我发现以下工作... '@ Html.ActionLink(“Profile”,“详细信息“,新的RouteValueDictionary {{”filter.member“,myvalue.ToString()}})' 希望格式化工作 - 基本上使用RouteValueDictionary而不是匿名类型? – KeithFearnley 2018-02-28 20:39:12

3

我只是用下面

@using System.Web.Routing 

@{ 
    RouteValueDictionary RouteValues = new RouteValueDictionary(); 

    RouteValues["id"] = 11; 
    RouteValues[Some_Name] = Some_Value; //do this with as many name/value pairs 
             //as you like 
} 

@Html.ActionLink("Link Text", "Action", "Controller", RouteValues) 

这是我从乔恩的答案this post教训。

我主要用这个在我的控制器为RedirectToAction()方法提供的路由值,但我不明白为什么它不应该在你的视图中工作,你将需要添加一个@using System.Web.Routing;虽然。

16

我想你使用下划线像data_icon,并将其转换它