2017-02-21 102 views
1

我从事MVC 5项目我是MVC技术的新手。在HTML帮助程序的帮助下创建img标记

我需要创建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> 

当用户选择另一个语言回发occures和培养值变化accroding到用户selection.After回发发生上述的HTML应显示标志和文本accroding用户选择。

例如,如果用户选择的是英语的文化元素是“恩”和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

一个'HtmlHelper'是没有必要的。你可以使用'@culture'例如 –

+0

@StephenMuecke我需要显示不仅税收,而且还有一个img元素,其src属性为特定标志 – Michael

+0

我假设你显示的html是错误的('id'属性没有任何意义我假设这应该是'src'属性?)。你只需要将图像的路径传递给模型(查看视图模型属性或'ViewBag'属性=例如'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() 

没有测试它,但它应该工作