синтаксис razor с ошибками компилируется, когда он не должен компилироваться

Итак, я столкнулся с ошибкой во время выполнения с моим приложением asp.net mvc3, когда я проверил код, я увидел, что на нем есть красная линия, в списке ошибок указано , что такого нет функция определена, но все равно компилируется. Ошибка появляется только во время выполнения? Я использую T4MVC и надеялся, что это поможет мне избежать подобных проблем !?

Это намеренно или я здесь что-то не так делаю?

введите описание изображения здесь

Приведенный выше код НЕ должен компилироваться, потому что такого метода там нет!

Он не работает во время выполнения:

введите описание изображения здесь

Подобные вещи случаются часто, не только с неопределенными методами, но даже с переменными и т. Д.


person gideon    schedule 16.02.2011    source источник
comment
Возможный дубликат представлений компиляции в ASP.NET MVC   -  person Jon Schneider    schedule 29.09.2016


Ответы (1)


Это сделано намеренно. По умолчанию построение представлений MVC отключено. Вы можете включить сборку ваших представлений MVC в Visual Studio следующим образом:

  • Щелкните правой кнопкой мыши свой проект в Visual Studio.
  • Выгрузить проект
  • Редактировать проект

  • Измените значение MvcBuildViews с false на true

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    ...
    <MvcBuildViews>true</MvcBuildViews>
    ...

  • Перезагрузить проект

В следующий раз, когда вы скомпилируете и в ваших представлениях MVC появятся ошибки, он не будет компилироваться. Обратной стороной является то, что процесс компиляции займет больше времени.

Обновить

Вот ответ по SO , объясняя, как избежать ошибки:

Использование раздела, зарегистрированного как allowDefinition = 'MachineToApplication' за пределами уровня приложения, является ошибкой. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.

person Martin Buberl    schedule 16.02.2011
comment
+1 ура! классно! Я знал, что где-то есть неизвестная функция, я только что обнаружил еще 2 ошибки, которые могли бы укусить меня позже! - person gideon; 16.02.2011
comment
+1, однако при добавлении этого он начал жаловаться на это: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS - person Filip Ekberg; 16.02.2011
comment
@Filip да Я тоже понял ... попробуйте Очистить решение и построить снова, это может даже означать, что у вас тоже есть ошибки в ваших представлениях, как и у меня! - person gideon; 16.02.2011
comment
@Filip Ekberg @giddy Я обновил свой ответ ссылкой на ответ SO, объясняя, как избежать этой ошибки. - person Martin Buberl; 16.02.2011
comment
Сначала я подумал, что здорово, это то, что мне нужно. Но затем у меня появилось много ошибок из (я думаю) скомпилированных представлений, которых больше не должно быть. - person ckonig; 01.06.2012
comment
@Filip Ekberg: Если очистки раствора недостаточно, пойдите и вручную удалите папки в obj-directory ваших проектов. Работал у меня. - person cederlof; 20.02.2013