2017-02-21 1 views
1

Ich arbeite an MVC 5-Projekt Ich bin neu in MVC-Technologie.Create img-Tag mit Hilfe von HTML-Helfer

brauche ich img Element und Text nach meiner Kultur, Wert zu schaffen, hier den Code im Blick:

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

Der Kulturwert hält die aktuelle Kultur.

Hier html, dass aktuelle Kultur zeigt, die von Flagge und Text angezeigt:

<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> 

Wenn der Benutzer eine andere Sprache Postbacks occures wählen und Kultur Wertänderung accroding Benutzer selection.After ein Postbacks aufgetreten die oben html sollte angezeigt werden Flagge und ein Text, der der Benutzerauswahl entspricht.

Zum Beispiel, wenn der Benutzer ausgewählt Englisch des Kultur Element ist „en“ und die html ist:

<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> 

Ich denke, es zu implementieren Ich muß mit Hilfe von Rasierer html Helfern img-Tag generieren.

Also meine Frage ist, wie kann ich img-Tag mit html.helper generieren?

+0

A 'HtmlHelper' ist nicht nötig arbeiten. Sie können einfach '@culture' zum Beispiel –

+0

@StephenMuecke verwenden Ich muss nicht nur Steuern, sondern auch ein IMG-Element, das src Attribut zu bestimmten Flag – Michael

+0

Ich nehme an, die HTML, die Sie gezeigt haben, ist falsch (das 'id' Attribut macht keinen Sinn und ich nehme an, das soll das 'src' Attribut sein?). Sie müssen nur den Pfad für das Bild an das Modell übergeben (zeigen Sie eine Ansichtsmodelleigenschaft oder eine 'ViewBag'-Eigenschaft an = zB' src = "@ View.ImagePath" ' –

Antwort

2

Sie können etwas tun:

  1. einige statische Klasse für HTML-Helfer hinzufügen
  2. Referenz es in cshtml Datei, so dass es sichtbar ist, wird
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. Und in cshtml Datei, um sie wie diese
@Html.DisplayFlag() 

verwenden getestet es nicht, aber es sollte