2012-01-03 3 views
0

У меня есть небольшой вопрос. Как установить ActionLink как образ чего-то вроде этого:Как установить ActionLink как изображение

<%= Html.ActionLink("English", "ChangeCulture", "Account", 
new {lang = "en", returnUrl = this.Request.RawUrl }, null)%> 

Для других ActionLink я сделал что-то вроде этого:

Html.ActionLink(" ", "About", "Home", new 
{style = "background: url('../../Content/images/img03.jpg')no-repeat center 
right;display:block; height:24px; width:24px;"})  

Но для этого примера он не работает. Я хочу добавить локализацию на свой сайт в виде изображений флагов. Заранее спасибо.

+0

Почему бы не работать по этой ссылке? –

+0

Я пробовал много разных способов, но, честно говоря, я понятия не имею, как это сделать. Конечно, в отношении первого ActionLink. Второй работает правильно. – user1113254

+0

Интересно, как второй ActionLink, который вы показали, работает, поскольку вы полностью испортили свои аргументы. Вы не используете правильную перегрузку. Вы смешали значения маршрута и атрибуты html. –

ответ

0

Я вижу несколько проблем здесь ...

Во-первых, когда вы настраиваете routeValues ​​из ActionLink В параметре со своим стилем сайтов. Добавить нулевой объект между ними:

Html.ActionLink(" ", "About", "Home", null, new 
{style = "background: url('../../Content/images/img03.jpg')no-repeat center 
right;display:block; height:24px; width:24px;"}) 

Во-вторых, вы хотите, чтобы проверить URL-адрес изображения является правильным, как вы используете относительный путь. Попробуйте использовать Url.Content, чтобы получить правильный путь.

В-третьих, отсутствие пробела между URL-адресом и флагом без повторения может повлиять на вывод вашего браузера.

+0

Благодарим вас за ответ. Возможно, я написал непонятно. Я хочу установить первый ActionLink в качестве изображения. Второй работает правильно. – user1113254

+0

Извините, но мне нужно, чтобы вы переписали вопрос, пожалуйста. Я не понимаю, с чем вам нужна помощь. – Richard

+0

Спасибо за ваш интерес, но я нашел решение. Мне нужно использовать новый {@ class = "EnglishFlag" вместо нулевого объекта. – user1113254

0

Я решил эту проблему с помощью HTML хелпер

Тхо я бы рекомендовал, используя TagBuilder для этого.

/// <summary> 
    /// Create image representation of boolean in form of 
    /// </summary> 
    /// <param name="html">The HTML.</param> 
    /// <param name="boolValue">if set to <c>true</c> [bool value].</param> 
    /// <param name="path">The path.</param> 
    /// <param name="alt">The alt.</param> 
    /// <returns> 
    /// html img tag 
    /// </returns> 
public static string ImageForBool(this HtmlHelper html, bool boolValue, string path,ImageAlt alt) 
{ 
    string trueVal = "tick"; 
    string falseVal = "x"; 
    string img = "<img src=\"{0}\" {1}/>"; 
    string altTag = string.Empty; 
    path += "Content/Actions/"; 
    if (boolValue) 
    { 
    altTag = (alt == null) ? "" : "alt=\"" + alt.trueOption + "\""; 
    return string.Format(img, Path.Combine(path, trueVal) + ".png", altTag); 
    } 
    else 
    { 
    altTag = (alt == null) ? "" : "alt=\"" + alt.falseOption + "\""; 
    return string.Format(img, Path.Combine(path, falseVal) + ".png", altTag); 
    } 
} 

этот вариант, возможно, является лучшим для вас

Альтернативный способ

используйте ссылку HTML действия и использовать string.replace с использованием кода:

string tag = Html.ActionLink("[toReplaceWithImage]", "ChangeCulture", "Account", 
new {lang = "en", returnUrl = this.Request.RawUrl }, null).ToString() 

tag.Replace("[toReplaceWithImage]", "<img src=\"path\">"); 
Смежные вопросы