如何从ASP.NET MVC#输出中删除空格?

时间:2011-03-04 17:34:25

标签: asp.net-mvc-3

如何从ASP.NET MVC 3输出中删除所有空格?


UPDATE:我知道如何使用string.Replace方法或正则表达式从字符串中删除空格;但我不知道,如何在ASP.NET MVC 3中使用主题从输出字符串中删除所有空格。例如,当调用“OnResultExecuted”方法,并且结果准备好发送给最终用户的浏览器时,我想获取结果 - 作为String或Stream对象;他们之间没有区别 - 并且完成我的工作。 谢谢大家。 :)

4 个答案:

答案 0 :(得分:18)

我找到了答案并创建了这样的最终解决方案:

首先创建一个基类来强制视图从中继承,如下所示,并覆盖一些方法:

  public abstract class KavandViewPage < TModel > : System.Web.Mvc.WebViewPage < TModel > {

      public override void Write(object value) {
          if (value != null) {
              var html = value.ToString();
              html = REGEX_TAGS.Replace(html, "> <");
              html = REGEX_ALL.Replace(html, " ");
              if (value is MvcHtmlString) value = new MvcHtmlString(html);
              else value = html;
      }
      base.Write(value);
  }

  public override void WriteLiteral(object value) {
      if (value != null) {
          var html = value.ToString();
          html = REGEX_TAGS.Replace(html, "> <");
          html = REGEX_ALL.Replace(html, " ");
          if (value is MvcHtmlString) value = new MvcHtmlString(html);
          else value = html;
      }
      base.WriteLiteral(value);
  }

  private static readonly Regex REGEX_TAGS = new Regex(@">\s+<", RegexOptions.Compiled);
  private static readonly Regex REGEX_ALL = new Regex(@"\s+|\t\s+|\n\s+|\r\s+", RegexOptions.Compiled);

  }

然后我们应该对位于 web.config 文件夹中的 Views 文件进行一些更改 - see here for more details

    <system.web.webPages.razor>
      <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <pages pageBaseType="Kavand.Web.Mvc.KavandViewPage"> <!-- pay attention to here -->
        <namespaces>
          <add namespace="System.Web.Mvc" />
          ....
        </namespaces>
      </pages>
    </system.web.webPages.razor>

答案 1 :(得分:2)

您可以采用的一种方法是创建自定义视图页面的继承;在其中,覆盖Write()方法(将建立3个方法),并在这些方法中,将object转换为string s,删除空格,最后调用{{1 }};

答案 2 :(得分:1)

您可以使用String.Replace方法:

string input = "This is  text with   ";
string result = input.Replace(" ", "");

如果您想要删除标签和新行,请使用正则表达式:

string input = "This is   text with   far  too   much \t  " + Environment.NewLine +
               "whitespace.";
string result = Regex.Replace(input, "\\s+", "");

答案 3 :(得分:-3)

 Str = Str.Replace(" ", "");

应该这样做。