Dalam kasus saya, saya mengalami masalah ini hanya di PC saya hanya untuk satu proyek. Proyek saya bekerja dengan baik di VS2012 tetapi ketika dibuka di VS2017 mengalami masalah ini.
Masalah utama saya di sini adalah cache. Proyek saya menunjuk ke versi cache dll yang lebih lama untuk Razor dan MVC dan tidak menemukan fitur yang ditambahkan di versi yang lebih baru, seperti ViewBag. ViewBag ditambahkan di Razor versi 3, tetapi karena saya memiliki cache Razor versi 2, ia tidak dapat menemukan ViewBag (tetapi dapat menemukan hal lain yang ada dalam versi 2). Namun, hanya membersihkan cache seperti dalam jawaban yang diterima tidak memperbaiki masalah saya. Kami harus mengubah file konfigurasi untuk mengatakan "gunakan versi 3 daripada 2" untuk Razor dan "gunakan versi 5 alih-alih 4" untuk MVC, lalu tutup VS, hapus cache, dan buka proyek dan pembangunan kembali. Kemudian semuanya diperbaiki. Di bawah ini adalah instruksi yang lebih detail.
Berikut urutan perubahan yang membantu saya memperbaiki masalah saya:
- Dalam folder "Tampilan", Web.config mengubah semua lokasi di mana
- Versi MVC diatur ke 4.0.0.0 hingga 5.0.0.0
- Versi Razor diatur ke 2.0.0.0 hingga 3.0.0.0
Inilah baris-baris itu dalam kasus saya:
<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
<section name="host" type="... Version=3.0.0.0 ..." .../>
<section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
...
pageParserFilterType="... Version=5.0.0.0 ..."
pageBaseType="... Version=5.0.0.0 ..."
userControlBaseType="... Version=5.0.0.0 ...">
<controls>
<add assembly="... Version=5.0.0.0 ..." ... />
</controls>
</pages>
(catatan: 1) versi Anda mungkin berbeda, saya hanya memberi tahu apa yang perlu dilakukan dalam kasus saya 2) Saya menghilangkan beberapa hal dengan "..." untuk singkatnya 3) bahkan jika Anda memiliki versi MVC seperti 5.3.2.0 Anda masih harus memasukkan 5.0.0.0, sama dengan versi Razor - masukkan semua nol di 3.0.0.0)
Dalam file konfigurasi utama (yang ada di tingkat atas) ubah webPages:version
dari 2.0.0.0 menjadi 3.0.0.0.
Perubahan ini mungkin tidak memengaruhi solusi tetapi saya masih akan menyebutkannya. Pastikan bahwa <namespaces>
bagian folder "Views" memiliki konten yang sama persis dengan file .conifg utama di root proyek, seperti:
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
- Akhirnya, tutup VS. Hapus semua file cache di
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
(atau apa pun jalur Anda yang benar) seperti yang disarankan dalam jawaban yang (saat ini) diterima oleh Fenton. Hapus juga .scan
file, meskipun tidak disebutkan dalam jawaban itu. Setelah Anda selesai, buka VS, Bersihkan proyek Anda dan Bangun kembali. Semuanya harus bekerja sekarang. Itu berhasil untuk saya.