2010-09-01 16 views
34

Chciałbym dać podobne wygenerowane z Html.ActionLink identyfikator HTML, więc mogę zmienić CSS w zależności od tego, gdzie jestem. Mam MasterPage z zestawem łączy i chciałbym, aby odróżnić aktywny „Tab” z jQuery zmieniając css tego aktywnego IDHtml.ActionLink z określonym identyfikatorem HTML?

Teraz używam:

<%: Html.ActionLink("Some View", "Index", "controller")%> 

It generuje:

<a href="/controller">Some View</a> 

Chciałbym wygenerować:

<a id="something" href="/controller">Some View</a> 

Czy to możliwe? Próbowałem:

<%: Html.ActionLink("Some View", "Index", "controller", new {id="blahbla")%> 

Ale to generuje:

<a href="/controller/Length?5">Some View</a> 
+1

nie jestem zaznajomiony z poprawną składnią, ale powinno to '' {naprawdę nie jest zamknięta? –

+0

Powinno, ale pomyślałem, że serwer WWW wygenerowałby błąd, gdy próbowali uruchomić tę stronę. Myślę, że to literówka. Czy oryginalny plakat może potwierdzić? – MrBliz

Odpowiedz

47

Jesteś na dobrej drodze. Nie jestem pewien, dlaczego to nie działa, ponieważ twój kod ma literówkę, która spowodowałaby błąd } expected. Poniżej znajduje to, czego szuka:

<%= Html.ActionLink("Test Link", "SomeAction", "SomeController", 
     null, new {id = "someID" }) %> 

która produkuje teh następujący kod HTML:

<a href="/SomeController/SomeAction" id="someID">Test Link</a> 

Edit: Właśnie uświadomiłem sobie, na czym polega problem, bo ja mis czytania co próbowałeś. Używasz niewłaściwego przeciążenia do przekazania elementu html id. Twój prawdopodobnie przekazuje parametr new { id="blah" } do parametru routeValues, który spowoduje, że zostanie użyty podczas budowania łącza trasy, a nie jako parametr, który jest tym, czego potrzebujesz.

myślę używasz:

ActionLink(string linkText, string actionName, Object routeValues, 
    Object htmlAttributes) 

Po co trzeba użyć jest następujący przeciążenie jak ja powyżej w mojej odpowiedzi:

ActionLink(string linkText, string actionName, string controllerName, 
    Object routeValues, Object htmlAttributes) 

Które pilnuje new { id="blah" } jest przekazywana do Parametr htmlAttributes.

4

Spróbuj tego:

<%: Html.ActionLink("Some View", "Index", "controller", null, new {id="something}")%> 
2

Zasadniczo to daje błąd, ponieważ nie ma przeciążenia metoda, która ma podpis, który chcesz .

Najbliżej podpis do tego, że trzeba to

public static string ActionLink(
this HtmlHelper htmlHelper, 
string linkText, 
string actionName, 
string controllerName, 
Object routeValues, 
Object htmlAttributes 

)

są przechodzącą identyfikator atrybutu do routevalue który jest dlaczego to daje zabawny href. Przekaż wartość null do parametru routevalue, a następnie dodaj swoje atrybuty html

1

spróbować

@Html.ActionLink("Forgot your access?", "RecoverPassword", 
"Account", new { area = "registration-full.html" }, 
new { @class = "col-xs-6", id = "login-forget-link" }) 
Powiązane problemy