views:

184

answers:

3

I decided primarily for SEO reasons to add the "rel" to my action link, but am not sure that the way I have gone about this is going to follow "best practices." I simply created a new Extension method as shown below.

Is this the best way to go about doing this? Are there things that should be modified in this approach?

VIEW

<%= Html.ActionLink("Home", "Index", "Home")
    .AddRel("me")
    .AddTitle("Russell Solberg")
%>

EXTENSION METHODS

public static string AddRel(this string link, string rel)
{
    var tempLink = link.Insert(link.IndexOf(">"), String.Format(" rel='{0}'", rel));
    return tempLink;
}

public static string AddTitle(this string link, string title)
{
    var tempLink = link.Insert(link.IndexOf(">"), String.Format(" title='{0}'", title));
    return tempLink;
}
+1  A: 

You can add any extra html parameter very easily and don't need to write your own extension methods

<%= Html.ActionLink("Home", "Index", "Home", null, new { tile="Russell Solberg", rel="me"}) %>
Richard
+1  A: 

I would probably not do it that way as that will make this possible for any string. You can already do this with the action link without creating your own extensions methods. Like this:

<%=Html.ActionLink("Home", "Index", "Home", null, new {title = "Russell Solberg", rel = "me"}) %>

Personally I prefer to use Url.Action() and write the <a /> tag myself as I think thats more readable.

Mattias Jakobsson
The forth param is route values, you need to add null here to get to html htmlAttributes which is the 5th parameter.
Richard
Thats right. Sorry, thought I knew the signature. Thank you for the correction.
Mattias Jakobsson
I had to check. IntelliSense means I don't need to remember.
Richard
+1  A: 

You can add attributes to the action link with anonymous class passed as fourth parameter:

<%= Html.ActionLink("Home", "Index", null,new{ @title="Russell Solberg", @rel="me" }) %>

The @ sign is used to allow you to specify attribute names that are c# reserved keywordk (like class).

Branislav Abadjimarinov