2015-04-26 5 views
1

Возможно ли добавить отсутствующие теги html в ASP MVC. Вот что я имею в виду:Добавление отсутствующих тегов html

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

Substing из этой строки в первые несколько символа приведет:

String x = "<p>Hello world "; 

Где есть </p> тег отсутствует, используя @MvcHtmlString.Create(x) в цикле вызывает путаницу из-за недостатков тегов.

Есть ли способ в ASP MVC для этого автоматически или C# -функция для их исправления?

ответ

4

Проверить эту суть: 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>  | 
+-------------------------+--------------------------------+ 
+0

Brilliant ответ – Castaldi

0

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 + ">"; 
    } 

с небольшим количеством чистой, вы можете создать метод расширения и вызывать это на ваших строк непосредственно

Смежные вопросы