2016-06-10 19 views
0
<ul class="nav navbar-nav navbar-right">  
    <li > 
     <a href="/GTracker/Account/Login" id="loginLink" style="color:lightgreen"> 
      Login 
      <img src="~/Content/Login-icon-door.png" /> 
     </a> 
    </li> 
    <li> 
     @Html.ActionLink("Log in", "Login", "Account", routeValues: null, 
         htmlAttributes: new { id = "loginLink", style = "color:lightgreen" }) 
    </li> 
</ul> 

Beide gehen die richtige Aktion. Kann ich den ActionLink-Helfer auch verwenden, um das Bild einzubinden?Wie setzen Sie ein Bild in einen ActionLink

enter image description here

+1

Url.Action & Url.Content können Ihre Action ersetzen, dann CSS-Eigenschaft auf Htmlattributes Einstellung sie in der richtigen Reihenfolge anzuordnen. http://stackoverflow.com/questions/26213704/adding-images-within-html-actionlink –

Antwort

2

Sie eine Action Helfer verwenden mögen, so dass Sie nicht über einen hart codierten Pfad in Ihrer Sicht (verständlich) haben.

Wie dies etwa:

<a href="@Url.Action("Login", "Account")" id="loginLink" style="color:lightgreen"> 
    Login 
    <img src="~/Content/Login-icon-door.png" /> 
</a> 
1

Verwenden Url.Action statt Action.Link

<a href="<%= Url.Action("Login", "Account")%>">Login 
      <img src="~/Content/Login-icon-door.png" /></a> 
0

Verwenden Url.Action Hyperlink und Url.Content definieren Bildinhalt neben dem Link zu definieren.

@Html.ActionLink("Log in", "Login", "Account", routeValues: null, 
         htmlAttributes: new { id = "loginLink", style = "color:lightgreen" }) 

hat

geändert
<a id="loginLink" href="@Url.Action("Login", "Account") style="color:lightgreen">Log in 
<img alt="Log in" src="@Url.Content("~/Content/Login-icon-door.png")"></a> 
0

denke ich einige Möglichkeiten, wie Sie dies über CSS und Ersetzen erreichen können.

HTML mit CSS ersetzen

Mit diesem können Sie im Text setzen + der [ersetzbar prop] unter dem Text param der Action. Damit muss der Benutzer keine spezifische Breite für den Text hinzufügen. Das Bild width und height kann auch direkt angegeben werden, anstatt es in die CSS-Klasse einzufügen. Wenn das verwendete Bild bereits in der Größe optimiert ist, müssen wir es nicht mehr hinzufügen. Position: absolute wird hinzugefügt, damit der Text und das Bild richtig ausgerichtet werden.

@Html.Raw(@Html.ActionLink("Login [img]", "Index", "Home").ToHtmlString().Replace("[img]", "<img src='../Content/images/LogIn.png' class='imgLink' />")) 

    .imgLink { 
     position: absolute; 
     width: 20px; 
     height: 20px; 
    } 

CSS

Dazu wird das Bild als Hintergrund hinzugefügt, so dass die Textbreite angegeben werden benötigt. Die Position des Bildes wird als center right festgelegt.

Probe generierten Link mit Bild basierend auf dem folgenden Code:

Sample

@Html.ActionLink("Login" , "Index" , "Home" , new { @class="imgLinkButton" }) 

.imgLinkButton{ 
    background: url('img.png') no-repeat center right; 
    display:block; 
    background-size: 20px 20px; 
    height:20px; 
    width:50px; 
} 
+0

Sie meinen 'Ersetzen' ** ODER **' CSS', das sind zwei verschiedene Lösungen, nicht? Für 'CSS' muss ich Berechnungen machen, damit das Bild rechts von' "Login" erscheint oder automatisch ist? –

+0

Ich habe es bereits in der Mitte für die Position gesetzt. Und ja, Sie können die Position des Bildes über CSS – denchu

+0

angeben Ich meine, die BG-Größe ist "20x20" Ich denke, das ist Bildgröße? Aber deine Breite ist 50px, also denke ich das ist für 'LOGIN' Text? Muss ich also die Größe berechnen, wenn ich den Text ändere? –

0

Sie müssen stattdessen Url.Action verwenden. Hier ist der sauberste Weg, können Sie es tun:

<li><a href="@Url.Action("Index", "Home")"><img src="~/Assets/Img/myImg.png"/> </a></li>