2012-01-03 4 views
0

少し質問があります。このような何かのための画像としてActionLinkのを設定する方法:ActionLinkを画像として設定する方法

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

しかし、それは動作しません。この例:他のActionLinkのために

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

を私はこのような何かをしました。私はフラグのイメージの形で自分のサイトにローカリゼーションを追加したい。前もって感謝します。私はここにいくつかの問題を参照してください

+0

なぜそれはないだろうこのリンクのために働く? –

+0

私はたくさんの方法を試しましたが、正直なところ、これをどうやって行うのか分かりません。もちろん、最初のActionLinkについて。もう1つは正常に動作しています。 – user1113254

+0

あなたが完全にその議論を混乱させたように、あなたが示した2番目のActionLinkをどうすればいいのでしょうか?あなたは正しい過負荷を使用していません。ルート値とhtml属性が混在しています。 –

答えて

0

...

まず、あなたのHTMLスタイルでActionLinkのののparamater routeValuesを設定しています。それらの間のヌルオブジェクトを追加します。

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を使用して正しいパスを取得してみてください。

第3に、URLとno-repeatフラグの間にスペースがないと、ブラウザの出力に影響を与える可能性があります。

+0

ありがとうございました。たぶん私は分かりにくく書いているかもしれません。私は最初のActionLinkをイメージとして設定したいと思います。もう1つは正常に動作しています。 – user1113254

+0

申し訳ありませんが、質問を書き直してください。私はあなたが助けを求めていることを理解していません。 – Richard

+0

ありがとうございますが、解決策を見つけました。 nullオブジェクトの代わりに new {@ class = "EnglishFlag"を使用する必要があります。 – user1113254

0

私はこのためにTagBuilderを使用してお勧めしますカントーHTMLヘルパー

を使用して、これを解決しました。

/// <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\">"); 
関連する問題