2

我正在尝试使用 Razor 模板来生成 .aspx 页面作为输出。我没有运气在文档中查找如何执行此操作。Page 和命名空间声明破坏了模板:

<%@ Page Language="C#" Title="@Page.Metadata.browser_title" %>
<%@ Import Namespace="System.Xml" %>

这些导致此错误:

TemplateCompileException:CS1501:方法“Write”没有重载需要 0 个参数第 27 行第 1 列:Write();

我认为这是因为使用 C# 语法的 Razor 模板会使两者发生冲突,因为上面的声明使用“@”。有没有办法让它们一起工作,以便 Razor 模板可以在模板运行后在渲染产品中使用 C# 生成输出?上面的示例还显示了如何将“Title”的值从模板中呈现出来。

4

3 回答 3

6

The @s in the <% are invalid Razor syntax.
You need to escape them by writing <%@@.

于 2012-06-01T19:16:14.963 回答
2

如果您喜欢 Razor,也许您应该查看 DD4T (http://code.google.com/p/dynamic-delivery-4-tridion/)。它允许您使用带有 Razor 视图的 ASP.Net MVC 构建网站。

于 2012-06-02T13:58:53.127 回答
1

您可以编写一个 C# TBB 在所有 Razormediator 模板之后添加标签,或者如果您可以在默认完成操作之后添加(如果您正在使用一个)则更好。

快速而肮脏的示例代码...

  Item OutputItem = package.GetByName(Package.OutputName);
  string OutputText = OutputItem.GetAsString();

  // Page tag declaration..
  string pagePretags = @"<<TWO LINES OF DECLARATIONs..>>"
  string FinalOutputText = pagePretags + OutputText ;

  OutputItem.SetAsString(FinalOutputText);

希望这可以帮助..

于 2012-06-01T19:25:54.887 回答