Intereting Posts

Как сделать intellisense работы с RazorEngine?

Я пытаюсь настроить RazorEngine так, чтобы intellisense работал над представлениями. Я добавляю RazorEngine и Microsoft.AspNet.Mvc, используя nuget. Я создаю TestView.cshtml и объявляю @model MyModel но он говорит, что The name 'model' does not exist in the current context . Я также не могу использовать intellisense внутри представления.

Пропустить какой-нибудь шаг здесь? Как включить intellisense в представлении?

    Ты можешь использовать

     @using RazorEngine.Templating @using Namespace.Of.My.Model @inherits TemplateBase 

    в верхней части шаблона.

    Это отлично работает в новом консольном приложении с Visual Studio 2013 (после добавления ссылки на RazorEngine). Документация для этого здесь .

    РЕДАКТИРОВАТЬ:

    Я заметил, что это работает только тогда, когда проект RazorEngine добавляется в решение и напрямую ссылается. Если вы используете пакет NuGet, вам необходимо дополнительно выполнить одно из следующих действий:

    1. Путь вывода вашего проекта установлен в bin\ вместо bin\Debug\ и bin\Release\ .
    2. Скопируйте RazorEngine.dll и System.Web.Razor.dll в bin\

    О, я столкнулся с такой проблемой, добавляя Razor Engine в свой проект dll. Чтобы решить эту проблему, вам необходимо:

    1. корректно настроить пространства имен в файле веб-конфигурации (надеюсь, что у вас есть это в папке представлений, если нет – копирование из проекта MVC):

                  ... 

    2.use для сборки в bin\ path (не любой другой, вы можете использовать команду copy post-build для перемещения результатов в другое место)

    3.clean решение и удалить obj и bin папки, чем строить

    Код моих просмотров начинается с @model MyModelClass и все работает отлично

    Я знаю, что этот вопрос старый. Я не мог заставить работать, независимо от решения. У меня есть исправление, которое может быть приемлемым для некоторых. Мне это не очень нравится, но это самая полезная вещь, которую я получил до сих пор.

    Хитрость заключается в том, чтобы определить «Модель» самостоятельно как переменную из реальной модели. Я определил его как «TrueModel», но любое имя, которое вы можете себе представить, не сталкивается с «моделью» или «моделью», должно работать. Затем просто замените все экземпляры «Модели» на «TrueModel».

     @using Namespace.To.My.Models @* This line should still look like an error, but we only really care about the intellisense in the rest of the .cshtml file. *@ @{ ModelType TrueModel = (ModelType)Model; } 
    @TrueModel.MyProperty is here now.

    @TrueModel.MyOtherProperty is great!

    Это не отличное решение, но это может быть полезно.