Я столкнулся с этой проблемой также при переходе нашего проекта на новый механизм просмотра Razor. Подход, который я использовал, немного отличался, потому что мы должны были генерировать данные JSON из C # и хотели выводить их при загрузке страницы.
В конечном итоге я реализовал RawView, который был параллелью View внутри файлов cshtml. По сути, чтобы получить необработанную строку,
@(new HtmlString(View.Foo))
// became
@RawView.Foo
Это требует нескольких изменений в макете проекта, поэтому я просто написал об этом в блоге здесь . Короче говоря, для этого требовалась дублированная реализация MVC DynamicViewDataDictionary и новый WebViewPage, содержащий RawView. Я также пошел дальше и реализовал оператор индекса в RawView, чтобы разрешить
@RawView["Foo"]
На случай, если кому-то понадобится перебрать данные со списком ключей.
Читая комментарий анурса, наверное, было бы лучше, если бы я назвал это как Literal вместо RawView.
new HtmlString()
в MVC 3, поскольку этот тип - .NET 4.