2010-02-02 52 views
7

我主要为了SEO原因决定将“rel”添加到我的动作链接,但我不确定我对此的处理方式将遵循“最佳实践“。我简单地创建了一个新的扩展方法,如下所示。将rel和标题添加到ASP.NET MVC动作链接

这是最好的方式去做到这一点?在这种方法中应该修改哪些东西?

VIEW

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

扩展方法

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; 
} 

回答

12

您可以非常容易地添加任何额外的HTML参数,不需要编写自己的扩展方法

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

我可能不会这样做,因为这将使任何字符串都成为可能。您可以使用操作链接执行此操作,而无需创建您自己的扩展方法。就像这样:

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

我个人更喜欢使用Url.Action()和写入<a />标记自己当作我认为是更具可读性。

+0

第四个参数是路由值,您需要在这里添加null以获得html htmlAttributes,这是第五个参数。 – 2010-02-02 08:29:14

+0

那就对了。对不起,我以为我知道签名。谢谢你的纠正。 – 2010-02-02 08:34:17

+0

我必须检查。智能感知意味着我不需要记住。 – 2010-02-02 08:45:53

4

您可以到操作链接添加属性与作为第四个参数传递匿名类:

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

的@符号是用来让你指定的属性是C#保留keywordk(如类)的名字。

+0

我不知道如何使用@字符。设置多个属性时,如果不使用它,会出现错误。 – Sambo 2011-10-13 11:28:03