Когда ASP.NET MVC перекомпилирует представления после их изменения? - PullRequest
0 голосов
/ 19 декабря 2011

Я знаю, что представления компилируются на лету, но когда именно это происходит?Первая компиляция происходит по первому запросу, если я не ошибаюсь.Но что делать, когда я изменяю файл aspx / cshtml, что происходит потом?

Можно ли каким-то образом управлять этим поведением без использования aspnet_compiler.exe?

Проблема, с которой я столкнулся, заключается в том, что я модифицирую свой контроллер / модель представления и загружаю их как отдельную сборку.Когда я обновляю страницу, я получаю эту ошибку:

Элемент модели, переданный в словарь, имеет тип «Test.Controllers.AController + IndexViewModel», но для этого словаря требуется элемент модели типа «Test».Controllers.AController + IndexViewModel '.

Разница между этими моделями заключается в имени сборки (не показано в этой ошибке), поэтому мне нужно перекомпилировать представления для моей обновленной модели представления.

1 Ответ

0 голосов
/ 19 декабря 2011

Это происходит при следующем запросе после модификации.Если у ваших ASPX-представлений есть код, то происходит двухэтапная компиляция.Сначала класс codebehind компилируется как часть проекта, затем среда выполнения ASP.NET создает другой класс, который наследуется от предварительно скомпилированного класса.Если вы измените контроллер для передачи другого класса модели, но не перекомпилируете свой проект, он не будет работать, потому что предварительно скомпилированный класс все еще ссылается на класс из старой сборки.

Так что, если вы используете codebehind,Проект компилирует класс, который наследуется от ViewPage<TModel>, и если вы хотите изменить TModel, вам нужно перекомпилировать проект.Если вы не используете codebehind, это не проблема, потому что TModel определяется во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...