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

时间:2012-02-08 15:55:21

标签: asp.net-mvc-3 c#-4.0 razor

我正在尝试将其他属性数据图标添加到我的操作链接中,但我收到以下错误:

  

无效的匿名类型成员声明符。匿名类型成员必须   声明成员作业,简单名称或成员访问权。

使用:

@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" })

4 个答案:

答案 0 :(得分:25)

更新:根据Xander上面的评论,使用data_icon = "gear"

您可以使用IDictionary<string, object>代替HTML属性的匿名对象:

@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

您正在使用的帮助程序只是创建字典的一种方便方法,但无论如何都会在后台创建字典。

答案 1 :(得分:17)

我认为您使用像 data_icon 这样的下划线并将其翻译为

答案 2 :(得分: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)

我从Jon在this post的答案中学到了。

我主要在我的控制器中使用它来为RedirectToAction()方法提供路由值,但是我不明白为什么它在你的视图中不起作用,你需要添加一个{{1}但是。

答案 3 :(得分:0)

使用“ data_icon”代替“ data-icon”。

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

_将在结果标记中自动转换为-。