2017-02-21 5 views
1

Я работаю над проектом MVC 5 Я новичок в технологии MVC.Создайте тег img с помощью HTML-помощника

Мне нужно создать элемент IMG и текст в соответствии с моей ценности культуры, здесь код в виде:

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

Значение культуры сохраняет текущую культуру.

Вот HTML, который показывает текущую культуру, показывая флаг и текст:

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

Когда пользователь выбирает другой язык и обратной передачи встречается, культура изменение значения accroding для пользователя selection.After обратная передача произошла HTML, выше, должны отображаться флаг и текст, подстраиваемый под выбор пользователя.

Например, если пользователь выбрал английский культура элемент «ан» и 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> 

Я думаю реализовать это мне нужно генерировать IMG тег с помощью бритвы HTML помощника.

Так что мой вопрос в том, как я могу сгенерировать img-тег, используя html.helper?

+0

'HtmlHelper' не является необходимым. Вы можете просто использовать '@culture' например –

+0

@StephenMuecke Мне нужно отображать не только налог, но и элемент img, который имеет атрибут src для определенного флага. – Michael

+0

Я предполагаю, что html, который вы показали, неверен (атрибут 'id' не имеет смысла и я предполагаю, что это должен быть атрибут 'src'?). Вам просто нужно передать путь к изображению модели (просмотреть свойство модели представления или свойство ViewBag '= eg' src = "@ View.ImagePath" ' –

ответ

2

Вы можете сделать что-то вроде этого:

  1. добавить статический класс для HTML хелперов
  2. ссылка его в cshtml файл, так что он будет виден
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() 

не проверял, но он должен работать