Обновление MVC 2 до MVC 3 проблемы с представлениями

Я пытаюсь обновить существующее веб-приложение ASP.net MVC 2 до MVC 3, чтобы использовать то совершенство, что Razor Viewengine и другие сказал об улучшениях.

После использования конвертера для преобразования моего приложения из mvc2 в mvc3 у меня возникли проблемы с моими строго типизированными представлениями. В качестве примера здесь у нас есть пользовательский элемент управления представлением, который строго типизирован для класса Profile.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Profile>" %>

Во время компиляции я получаю

Compiler Error Message: CS1061: 'object' does not contain a definition for 'folio' and no extension method 'folio' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

что, на мой взгляд, соответствует этой строке alt text

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

Я проверил как web.config, так и views / web.config, и оба, похоже, ссылаются на System.Web.Mvc версии 3.0.0.0

Любая помощь будет оценена по достоинству!

Ниже приведены снимки экрана web.configs.

alt text

alt text

alt text


person Phil Strong    schedule 18.08.2010    source источник
comment
Точно, убедитесь, что вы также обновили Views \ Web.config, он решил проблему для меня, спасибо!   -  person Piotr Owsiak    schedule 08.08.2012


Ответы (5)


Это ошибка в MVC 3 Preview 1, и она будет исправлена ​​в следующем выпуске. Тем временем вы можете переставить свои страницы так, чтобы директива ‹% @ Control%> была последней в файле, и это должно было стать проблемой для вас.

person Brad Wilson    schedule 19.08.2010
comment
Похоже, превью нельзя использовать. Также кажется, что, возможно, по той же причине, по которой intellisense больше не поврежден в представлении. - person Phil Strong; 20.08.2010
comment
@Phil, превью по-прежнему можно использовать в вашем сценарии с обходным путем, который предложил Брэд. Приносим извинения за неудобства! - person Eilon; 20.08.2010
comment
Таким образом, перемещение его в нижнюю часть исправило некоторые из моих страниц, но у других был буфер, который не может быть нулевым, исключение, выбрасываемое в System.IO.MemoryStream ..... в данном случае, он не готов даже для разработки ИМХО. У меня более сотни представлений и элементов управления, и было бы кошмаром переместить строку директив вниз, даже если бы она была на 100% надежной. - person Phil Strong; 20.08.2010
comment
Да, это было исправлено для бета-версии. - person Brad Wilson; 15.10.2010

Я просто заменил web.config в моей папке «Просмотры» (на один из недавно созданного проекта mvc3), как предполагала миграция, и это сработало для меня. Я не был готов переместить все объявления в конец, так как мой проект был слишком большим.

Надеюсь, это поможет, хотя, вероятно, для вас уже слишком поздно. Может это помогает другим ...

person Wiaan    schedule 30.11.2010

На всякий случай попробуйте изменить свой bindingRedirect на

<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
person Buildstarted    schedule 19.08.2010
comment
Это не помогло, но я согласен с тем, что новый проект mvc 3 действительно использует это вместо записей двойной зависимой сборки для 1.0–2.0 и 2.0–3.0. - person Phil Strong; 20.08.2010
comment
Да, думаю, я бы никогда не узнал, что это ошибка ... это была единственная реальная разница между моей конфигурацией и вашей, которая могла иметь отношение к делу. - person Buildstarted; 20.08.2010

У меня была точно такая же проблема, и после того, как я немного выдернул волосы, я нашел и последовал решению Виаана. Работал отлично, сайт резервный.

Как ни странно, не внесение этого изменения в наши блоки разработки не сломало наш сайт - он появился только тогда, когда мы переместили его на промежуточный сервер.

person FeiBao 飞豹    schedule 19.01.2011

Если ваш проект основан на MVC4 или уже использует Framwork 4, создайте пустой проект mvc4. А затем замените web.config в папке просмотров. Работает сразу. Спасибо, Вианна. Поскольку у меня есть какое-то старое приложение, которое использует aspx, а не razor. После обновления Framework 3 до 4 я получил эту ошибку.

person Young Kim    schedule 10.01.2013