Asp.net 在HTML助手的帮助下创建img标记

Asp.net 在HTML助手的帮助下创建img标记,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我从事MVC5项目,我是MVC技术的新手 我需要根据我的文化价值创建img元素和文本,这里是视图中的代码: @{ var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant(); } 区域性值保留当前区域性 此处显示通过显示标志和文本显示当前区域性的html: <a class="dropdown-toggle no-text-underline" dat

我从事MVC5项目,我是MVC技术的新手

我需要根据我的文化价值创建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>

当用户选择另一种语言时,会发生回发,并且区域性值会根据用户选择进行更改。回发发生后,上面的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>

我想要实现它,我需要在RazorHTML助手的帮助下生成img标记


所以我的问题是如何使用html.helper生成img标记?

您可以这样做:

  • 为html助手添加一些静态类
  • 在cshtml文件中引用它,使其可见
  • 在cshtml文件中,像这样使用它

  • 尚未测试它,但它应该可以工作

    A
    HtmlHelper
    不是必需的。您只需使用
    @culture
    即可example@StephenMuecke我不仅需要显示tax,还需要显示一个img元素,该元素具有特定flag的src属性。我假设您显示的html是错误的(该
    id
    属性没有意义,我假设它应该是
    src
    属性?)。您只需将图像的路径传递到模型(查看视图模型属性或
    ViewBag
    property=e.g.
    src=“@view.ImagePath”
    是的,我在id和src属性上有错误,已修复。谢谢:)您仍然可以通过
    ViewBag
    传递它,但您应该使用
    @Html.Action(…)
    在布局中调用返回html部分视图的服务器方法。
    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));
        }
    
    @Html.DisplayFlag()