【问题标题】:helper show the html as a string asp.net MVC 5助手将 html 显示为字符串 asp.net MVC 5
【发布时间】:2017-02-25 11:38:59
【问题描述】:

我正在研究 asp.net MVC 5,我为布尔创建了一个帮助器。

我写了这个:

public class CustomHelper
    {
        public static string Boolean(bool? value)
        {
            if(value == true )
                return string.Format("<span class='glyphicon glyphicon-ok green'></span>");
            else
                return string.Format("<span class='glyphicon glyphicon-remove red'></span>");
        }
    }

剃刀是:

<td>
     @CustomHelper.Boolean(item.Deleted)
</td>

但结果与照片相同。 html 显示为字符串

如何解决?所以我可以显示符号? 谢谢你

【问题讨论】:

  • 请解释一下,我没明白你的意思
  • 使用 MvcHtmlString.Create 代替 string.format
  • 你的助手不是 MVC 助手的扩展,它只是一个有方法的类。检查 asp.net 站点中的 mvc 助手概念
  • 成功了,谢谢

标签: asp.net-mvc razor helper


【解决方案1】:

默认情况下,@ 符号对输出进行编码。 您应该将自定义检查创建为HtmlHelper 类的扩展方法,如下所示

    public static class BooleanExtensions
         {
              public static MvcHtmlString Boolean(this HtmlHelper helper, bool value)
              {
                  var spanTag = new TagBuilder("span");
                  if(value)
                     spanTag.MergeAttribute("class", glyphicon glyphicon-ok green");
                  else
                     spanTag.MergeAttribute("class", glyphicon glyphicon-remove red");

                   return MvcHtmlString.Create(spanTag.ToString(TagRenderMode.EndTag));           

              }
         }

接下来,在 Razor 视图中,将其命名为:

@Html.Boolean(item.Deleted)

不要忘记在视图开头为具有该类的命名空间添加@using

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 2012-09-18
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    相关资源
    最近更新 更多