I think some ways you can achieve this is via CSS and Replace.
HTML Replace with CSS
With this, you can put in the text + the [replaceable prop] under the text param of the ActionLink. With this, the user does not have to add specific width to for the text.
The image width
and height
can also be specified directly instead of adding it in the CSS class. If the image used is already optimized in size, then we don't need to add it anymore. Position: absolute
is added so the text and image will be aligned properly.
@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
For this, the image is added as the background, so the text width is needed to be specified. The position of the image is set as center right
.
Sample generated link with image based on the code below:

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