2012-06-01 6 views
2

Я пытаюсь использовать шаблон Razor для создания страницы .aspx в качестве вывода. Мне не повезло в документации, как это сделать. Страницы и пространства имен декларации нарушают шаблон:Использование шаблонов Razor для создания страницы .aspx

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

Они вызывают эту ошибку:

TemplateCompileException: CS1501: Отсутствие перегрузки по методу 'Write' принимает 0 аргументы Line 27 Колонка 1: Write();

Я предполагаю, что это связано с тем, что шаблоны Razor с использованием синтаксиса C# делают два конфликта, так как в приведенных выше объявлениях используется «@». Есть ли способ заставить их работать вместе, чтобы шаблон Razor мог создавать результат с C# в рендерированном продукте после запуска шаблона? В приведенном выше примере также показано, как значение для «Title» должно быть отображено вне шаблона.

+1

Почему вы это делаете? – SLaks

+0

Поскольку посредник Razor Mediator для Tridion, похоже, не играет в SO, я бы порекомендовал спросить его в своем блоге: http://www.codedweapon.com/ –

+0

Сначала он проходит через систему управления контентом Tridion , где содержимое на странице вводится не-разработчиками. Раньше я использовал DWT, но я работаю над доказательством концепции использования Razor вместо более гибких опций в шаблоне макета. Razor/C# управляет кодом шаблона, но страницы на производственных серверах имеют C# на них, а также потому, что сайт основан на .net и использует мастер-страницы, пользовательские элементы управления и т. Д. – user1408652

ответ

6

@ s в <% недействительны Синтаксис бритвы.
Вам нужно сбежать от них, написав <%@@.

+0

Большое спасибо, что сделал трюк! Я пробовал @<% @ и @ {<% @ ...}, угадывая синтаксис для его разрешения. Еще раз спасибо! – user1408652

+0

@ user1408652 Если это сработало, рассмотрите его как принятый ответ. –

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); 

Надеется, что это помогает ..

2

Если вы как Razor, может быть, вы должны проверить DD4T (http://code.google.com/ р/динамическая доставка-4-Tridion /). Он позволяет вам создавать веб-сайт с использованием ASP.Net MVC с представлениями Razor.

Смежные вопросы