【问题标题】:Adding missing html tags添加缺少的 html 标签
【发布时间】:2015-07-04 20:32:23
【问题描述】:

是否可以在 ASP MVC 中添加缺少的 html 标签。这就是我的意思:

String x = "<p><b>Hello world how are you</b></p>";

在前几个字符处替换该字符串将导致:

String x = "<p>Hello world ";

在缺少&lt;/p&gt;标签的地方,在循环中使用@MvcHtmlString.Create(x)会导致标签丢失导致标签混淆。

在 ASP MVC 中是否有自动执行此操作的方法或 C# 函数来纠正它们?

【问题讨论】:

    标签: c# html asp.net-mvc string tags


    【解决方案1】:

    检查这个要点:https://gist.github.com/mouhong/c09487502e261f7ce53d

    它将关闭丢失的结束标签(支持嵌套标签)和损坏的结束标签,并忽略损坏的开始标签。

    它还没有完全测试,如果你发现任何错误,请告诉我:P

    用法:

    "<p>Hello".CloseTags();
    

    示例:

    +-------------------------+--------------------------------+
    |            Input        |          Output                |
    +-------------------------+--------------------------------+
    | <div>Hello World        | <div>Hello World</div>         |
    | <div>Hello, <b>World    | <div>Hello, <b>World</b></div> |
    | <div>Hello World</di    | <div>Hello World</div>         |
    | <div>Hello, <b>World</  | <div>Hello, <b>World</b></div> |
    | <div>Hello World. <span | <div>Hello World. </div>       |
    +-------------------------+--------------------------------+
    

    【讨论】:

    【解决方案2】:

    1可能最简单的做法是创建一个辅助函数,该函数接收来自 MvcHtmlString.Create(x) 的输出并在缺少时添加结束标记。

    看起来像这样(未测试)

        private string CloseTag(string snippet)
        {
            if (string.IsNullOrEmpty(snippet) || (snippet.TrimStart().StartsWith("<") && snippet.TrimEnd().EndsWith(">")) || !snippet.TrimStart().StartsWith("<"))
            {
                return snippet;
            }
    
            var index = snippet.IndexOf('>');
            var tag = snippet.Substring(1, index - 1);
            return snippet.TrimEnd() + "</" + tag + ">";
        }
    

    稍微清理一下,您可以创建一个扩展方法并直接在您的字符串上调用它

    【讨论】:

      猜你喜欢
      • 2023-01-22
      • 1970-01-01
      • 2015-06-24
      • 2013-03-12
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2015-10-12
      • 2020-10-27
      相关资源
      最近更新 更多