2017-02-21 18 views
1

私はMVC 5プロジェクトで作業します。私はMVC技術には初めてです。HTMLヘルパーの助けを借りてimgタグを作成します

私はここでビューのコードは、私の文化の値に応じてのimg要素やテキストを作成する必要があります。

@{ 
    var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant(); 
} 

文化値は、現在の文化を保持します。

<a class="dropdown-toggle no-text-underline" data-toggle="dropdown" href="#"><img class="flag-lang" src="/assets/images/flags/no.png" width="16" height="11" alt="lang" />Norsk</a> 

ユーザが別の言語ポストバックoccures、ユーザにaccroding 培養値の変更を選択するとselection.Afterポストバックが上記HTMLを発生し表示する必要があり:フラグとテキストを表示することによって、現在の文化を示すことこと

ここHTMLユーザの選択を支持するテキストとを含む。ユーザーが英語を選択した場合

は、例えば文化要素は「EN」で、HTMLは次のとおりです。

<a class="dropdown-toggle no-text-underline" data-toggle="dropdown" href="#"><img class="flag-lang" src="/assets/images/flags/us.png" width="16" height="11" alt="lang" />English</a> 

私はかみそりのHTMLヘルパーの助けを借りてのimgタグを生成する必要があり、それを実装すると思います。

私の質問はどのようにhtml.helperを使ってimgタグを生成できますか?

+0

動作するはずです。 '@culture'を使用することができます –

+0

@StephenMuecke税だけでなく特定のフラグにsrc属性を持つimg要素を表示する必要があります – Michael

+0

あなたが表示したhtmlが間違っていると仮定します'src'属性であると仮定していますか?)。画像のパスをモデルに渡すだけで済みます(ビューモデルプロパティまたはViewBagプロパティを表示する、例えばsrc = "@ View.ImagePath") –

答えて

2

あなたはこのような何かを行うことができます。それが見えるようになりますように

  1. がCSHTMLファイルのHTMLヘルパーのため
  2. 参照して、いくつかの静的なクラスを追加
public static MvcHtmlString DisplayFlag(this HtmlHelper html) 
    { 
     var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant(); 
     var imgSrc = string.Format("/assets/images/flags/{0}.png", culture); 
     TagBuilder tag = new TagBuilder("img"); 
     tag.AddCssClass("flag-lang"); 
     tag.MergeAttribute("src", imgSrc); 
     return MvcHtmlString.Create(tag.ToString(TagRenderMode.SelfClosing)); 
    } 
  1. そしてCSHTMLファイルにこの
@Html.DisplayFlag() 

ようにそれを使用するには、それをテストしていませんが、それは `HtmlHelper`は必要ありません

関連する問題