在剃刀视图中打印HtmlContent的内部文本(MVC4)

时间:2013-05-02 19:02:55

标签: asp.net-mvc asp.net-mvc-4 tagbuilder

使用MVC,请查看此示例,其中包含以下HTML代码:

<p>Duma</p><img url='..' /><p>Duma</p>

我希望仅打印标签的内容,如:Duma Duma,删除图片,标签并仅显示文字(作为innerText)

我尝试使用Html.Raw()但它没有用。此外,我正在阅读关于类TabBuilder并创建Html扩展方法,但我不知道如何在我的剃刀视图中实现。

1 个答案:

答案 0 :(得分:2)

您可以使用字符串扩展来删除Html标记。

public static class StringExtensions
{
    public static string StripHtml (this string inputString)
    {
       return Regex.Replace 
         (inputString, "<.*?>", string.Empty);
    }
}

然后在你的视图中使用它

@myHtmlString.StripHtml()

您可能需要声明StringExtensions类的using语句或将其添加到Views文件夹中的Web.Config文件

@using My.Extensions.Namespace

OR

<system.web>
    <pages>
      <namespaces>
        <add namespace="My.Extensions.Namespace" />
      </namespaces>
    </pages>
</system.web>

你也可以制作一个Html助手扩展

public static class HtmlExtensions
{
    public static string StripHtml (this System.Web.Mvc.HtmlHelper helper, string htmlString)
    {
       return Regex.Replace 
         (htmlString, "<.*?>", string.Empty);
    }
}

您可以在视图中使用此功能

@Html.StripHtml(myHtmlString)

您仍需要为上面的扩展方法添加对命名空间的引用。在Views文件夹中添加Web.Config或在视图中添加using语句。这里的不同之处在于,将它添加到Web.Config文件中,您将能够在所有视图中使用此扩展方法,而无需添加using语句。

相关问题