C# 使用Razor模板生成.aspx页面

C# 使用Razor模板生成.aspx页面,c#,razor,tridion,C#,Razor,Tridion,我正在尝试使用Razor模板生成一个.aspx页面作为输出。我没有运气在文档中查找如何做到这一点。页面和命名空间声明正在破坏模板: <%@ Page Language="C#" Title="@Page.Metadata.browser_title" %> <%@ Import Namespace="System.Xml" %> 这些是导致此错误的原因: TemplateCompileException:CS1501:方法“Write”没有重载,在第27行第1列:W

我正在尝试使用Razor模板生成一个.aspx页面作为输出。我没有运气在文档中查找如何做到这一点。页面和命名空间声明正在破坏模板:

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

这些是导致此错误的原因:

TemplateCompileException:CS1501:方法“Write”没有重载,在第27行第1列:Write()中使用0个参数


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

中的
@
s您可以编写一个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);
Item OutputItem=package.GetByName(package.OutputName);
string OutputText=OutputItem.GetAsString();
//页面标记声明。。
字符串pagePretags=@“”
字符串FinalOutputText=pagePretags+OutputText;
OutputItem.SetAsString(FinalOutputText);

希望这有帮助。

如果你喜欢剃须刀,也许你应该看看DD4T(http://code.google.com/p/dynamic-delivery-4-tridion/). 它允许你使用ASP.Net MVC和Razor视图来构建网站。

你到底为什么要这样做?因为Tridion creator的Razor调解人似乎不在,所以我建议你在他的博客上问他:它首先要通过一个名为Tridion的内容管理系统,页面上的内容由非开发人员输入。我以前使用过DWT,但我正在进行概念验证,以便在布局模板中使用Razor,而不是更灵活的选项。Razor/C#操作模板代码,但生产服务器上的页面上也有C#,因为该网站基于.net,使用母版页、用户控件等。非常感谢,这就成功了!我试过了@