Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access

后端 未结 4 2070
青春惊慌失措
青春惊慌失措 2021-01-01 11:26

I\'m trying to add additional attribute data-icon to my Action Link, but I\'m getting the error below:

Invalid anonymous type member

相关标签:
4条回答
  • 2021-01-01 11:44

    Use "data_icon" instead of "data-icon".

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

    The _ will automatically be converted to - in the resulting markup.

    0 讨论(0)
  • 2021-01-01 11:48

    I think you use underscore like data_icon and it translates it

    0 讨论(0)
  • 2021-01-01 11:49

    UPDATE: From Xander's comment above, use data_icon = "gear"

    You can use an IDictionary<string, object> in place of the anonymous object for HTML attributes:

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

    See this overload: http://msdn.microsoft.com/en-us/library/dd504988.aspx

    The helper you are using is just a convenient method of creating the dictionary, but behind the scenes the dictionary is created anyway.

    0 讨论(0)
  • 2021-01-01 12:00

    I just use the following

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

    which I learnt from Jon's answer in this post.

    I have mainly used this in my controllers to provide the route values for RedirectToAction() methods, but i don't see why it shouldn't work in your view, you will need to add a @using System.Web.Routing; though.

    0 讨论(0)
提交回复
热议问题