Razor 生成单行文本

que*_*en3 5 razor asp.net-mvc-3

我想编写 Razor 视图助手来生成单行内容:

@helper Format(obj) {
   <text>
       @obj.Title
       @obj.FormatInnerData() (obj.User != null)
       {
          @obj.User.Name
       }
   <text>
}
Run Code Online (Sandbox Code Playgroud)

但我当然明白

Title
Inner Data
User Name
Run Code Online (Sandbox Code Playgroud)

目前我必须做

<text>@obj.Title @obj.FormatInnerData() @(obj.User != null ? obj.User.Name : "")</text>
Run Code Online (Sandbox Code Playgroud)

将文本输出生成为没有换行符的单行,但这对于许多属性来说可能会变得很长/不可读。

换句话说,我如何更方便地使用 Razor 生成文本内容,而不是标记内容?

UPD:理想情况下是这样的

   <content>@obj.Title</content>
   <content>@obj.Format()
 @obj.User.Name</content>
Run Code Online (Sandbox Code Playgroud)

即只有内容标签之间的部分进入输出流。当然,也许有更简单的语法,例如 @: 而不是 <text>。

一个示例用例是生成内部带有标记的 JavaScript 字符串内容,或者生成每行包含许可证详细信息(格式为“密钥:名称(详细信息)”)的文本文件,并用空格填充以进行分组。

fre*_*tje 1

因此,如果我理解正确的话,您想要一种用多行指定视图的方法,而最终的输出将是一行上的所有内容?

我认为这不可能开箱即用,但您可以编写自己的自定义 RazorViewEngine(派生自实际的 RazorViewEngine),它会在返回视图之前修剪掉所有换行符。

  • @queen3:您可以在自定义视图引擎中实现自己的标签,例如“&lt;singleline&gt;”,就像razorengine具有“&lt;text&gt;”标签一样。然后它只会从这些单行块中修剪换行符。 (3认同)