2013-09-30 4 views
0

Я написал помощникMVC Html пользовательских Helper срезанные пространства

public static class TestHelper 
    { 
    public static string Test(this HtmlHelper helper) 
    { 
     var writer = new HtmlTextWriter(new StringWriter(), string.Empty); 
     //writer.InnerWriter.NewLine = string.Empty; 
     //writer.NewLine = string.Empty; 
     writer.RenderBeginTag(HtmlTextWriterTag.Ul); //<ul> 
     for (int i = 0; i < 5; i++) 
     { 
      RenderRow(helper, writer, i); 
     } 
     writer.RenderEndTag();      //</ul> 
     return writer.InnerWriter.ToString(); 
    } 

    private static void RenderRow(HtmlHelper helper, HtmlTextWriter writer, int i) 
    { 
     writer.RenderBeginTag(HtmlTextWriterTag.Li); 
     writer.Write(i); 
     writer.RenderEndTag(); 
    } 
    } 

и использовать его таким же образом:

@Html.Test() 

, но в результате я вижу HTML-теги в браузере. Проблема заключается в пробеле перед первым тегом:

<ul> <li>0</li><li>1</li><li>2</li><li>3</li><li>4</li> </ul> 

есть символ с кодом 020h перед «ul». I судимое:

1) в классе Test:

return writer.InnerWriter.ToString().Trim(); 

2) в файле cshtml:

@Html.Test().Trim() 

3) судимое изменить писатель настройки

writer.InnerWriter.NewLine = string.Empty; 
writer.NewLine = string.Empty; 

Но все это без положительного результата (третий шаг частично очищает код). Есть ли какой-либо способ иметь html-код без вкладок, пробелов, конца строки и т. Д.?

ответ

1

Trim() устранит только ведущие и конечные пробелы. Вместо этого используйте .Replace(" ", string.empty).

0

Но с заменой я заменю все пробелы, например пробелы между словами в неупорядоченном списке. Есть ли другой путь? У вас есть идея, откуда это место?

Если я удалю форвардное пространство в FireBug, страница будет отображаться правильно.

+0

'.Replace ("", string.empty)' также не помогает. Блейз, спасибо за попытку – user1820916

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