2010-02-02 3 views
7

기본적으로 SEO 이유로 액션 링크에 "rel"을 추가하기로 결정했으나 내가 수행 한 방식이 "베스트 프랙티스 . " 아래와 같이 새로운 Extension 메서드를 만들었습니다.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을 추가하여 htmlAttributes (다섯 번째 매개 변수)를 가져와야합니다. –

+0

그게 전부입니다. 미안, 내가 그 서명을 안다고 생각 했어. 수정해 주셔서 감사합니다. –

+0

나는 확인해야했다. IntelliSense는 내가 기억할 필요가 없음을 의미합니다. –

4

당신은 네 번째 매개 변수로 전달 된 익명의 클래스와 액션 링크에 속성을 추가 할 수 있습니다

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

@ 기호는 (클래스 등) C#을 예약 keywordk있는 속성 이름을 지정할 수 있도록하는 데 사용됩니다.

+0

@ 문자를 사용하는 것에 대해 알지 못했습니다. 하나의 속성을 사용하지 않을 때 둘 이상의 속성을 설정할 때 오류가 발생합니다. – Sambo