2010-02-02 12 views
7

Ho deciso principalmente per ragioni SEO di aggiungere il "rel" al mio link di azione, ma non sono sicuro che il modo in cui sono andato su questo seguirà "best practice" ". Ho semplicemente creato un nuovo metodo di estensione come mostrato di seguito.Aggiunta di rel e titolo a ASP.NET MVC Link azione

È questo il modo migliore per fare questo? Ci sono cose che dovrebbero essere modificate in questo approccio?

VISTA

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

Metodi di estensione

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

risposta

12

È possibile aggiungere qualsiasi parametro aggiuntivo html molto facilmente e non c'è bisogno di scrivere i propri metodi di estensione

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

Probabilmente non lo farei in quel modo, in quanto ciò renderà possibile questo per qualsiasi stringa. Puoi già farlo con il link di azione senza creare i tuoi metodi di estensioni. Come questo:

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

Personalmente preferisco usare Url.Action() e scrivere il tag <a /> me stesso come credo che sia così più leggibile.

+0

Il quarto parametro è i valori del percorso, è necessario aggiungere null qui per ottenere html htmlAttributes che è il quinto parametro. –

+0

Questo è giusto. Scusa, pensavo di conoscere la firma. Grazie per la correzione. –

+0

Ho dovuto controllare. IntelliSense significa che non ho bisogno di ricordare. –

4

È possibile aggiungere attributi al link azione con classe anonima passata come quarto parametro:

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

Il simbolo @ è usato per permettere di specificare i nomi degli attributi che sono C# keywordk riservata (come classe).

+0

Non sapevo di usare il carattere @. Avrei ricevuto un errore quando si impostava più di un attributo quando non lo si utilizzava. – Sambo

Problemi correlati