C# 使用Razor模板生成.aspx页面
我正在尝试使用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
<%@ 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,使用母版页、用户控件等。非常感谢,这就成功了!我试过了@