MVC Html自定义助手剪切空间

时间:2013-09-30 22:24:00

标签: c# asp.net-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> 

在“ul”之前有一个代码为020h的符号。 我试过了:

1)在Test类中:

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

2)在cshtml文件中:

@Html.Test().Trim()

3)尝试更改作家设置

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

但所有这些都没有积极的结果(第三步部分清理代码)。 有没有任何方法可以使用没有制表符,空格,字符串结尾等的HTML代码?

2 个答案:

答案 0 :(得分:1)

Trim()只会消除前导和尾随空格。请改用.Replace(" ", string.empty)

答案 1 :(得分:0)

但是使用Replace我将替换所有空格,例如无序列表中的单词之间的空格。还有其他方法吗?你知道这个空间来自哪里吗?

如果我在FireBug中删除了前向空格,页面会正确呈现。