Подтвердить что ты не робот

Можем ли мы использовать синтаксис Razor в ASP.NET Webforms (*.aspx pages)?

Мне нравится синтаксис Razor, разработанный Microsoft для встроенного кодирования в своем продукте WebMatrix (http://en.wikipedia.org/wiki/Microsoft_WebMatrix).

Теперь, когда Visual Studio SP1 имеет RTM, возможно (и/или планируется) включить использование синтаксиса Razor в ASP.NET Webforms?

4b9b3361

Ответ 1

Мы (команда ASP.NET) в настоящее время не планируем поддерживать модель страницы WebForms с использованием синтаксиса Razor. Кроме того, маловероятно, что мы когда-либо всерьез рассмотрим это, поскольку модели слишком отличаются друг от друга, чтобы обе команды работали вместе.

Ответ 2

Вы можете использовать страницы Razor без MVC; это называется ASP.Net WebPages.

Просто добавьте файлы .CSHTML в обычный проект ASP.Net 4.0.

I объяснил, как это работает в моем блоге.

Ответ 3

Вы можете интегрировать его, используя RazorEngine, доступный от Codeplex. Это позволяет обрабатывать бритву вне MVC. Хотя вы не получаете все функции, которые вы получаете от версии Razor для MVC, такие как @Html и @Url и другие.

Ответ 4

Я осмелюсь сказать, что Microsoft это рассмотрела, но официального слова по этому вопросу нет. Поскольку у вас не должно быть кода С# или VB в файле ASPX, вам нужно задуматься о том, как добавить поддержку Razor в Web Forms. Код по-прежнему будет (частичным) файлом класса. Вы не ставили бы Razor там больше, чем вы бы поместили в файл класса в веб-страницах или MVC. И обмен файлами управления сервером и все эти хорошие декларативные материалы для Html Helpers устраняют одну из основных причин перехода на веб-форму, IMO.

Ответ 5

Это действительно не так сложно сделать. Работая над этим прямо сейчас. Захватите RazorEngine от CodePlex. Он позволяет компилировать файлы RZOR cshtml/vbhtml в класс во время выполнения.

Затем вы можете взять этот класс и использовать его с сервера управления ASP.Net внутри метода Render. Это отличный способ получить HTML из тела серверного элемента управления. Много, намного чище.

Теперь вы также можете добавить некоторые методы, которые вы можете вызвать из Razor. Например, добавьте что-то вроде RenderChild. Кроме того, вы можете установить Server Control как модель, доступную для Razor. Затем вы можете вызвать серверный элемент управления. Включая что-то вроде захвата одного из них дочерних элементов управления и вызова Render.