Saya mencoba menggunakan ViewBag di aplikasi saya, saya memiliki semua dll terbaru, versi terbaru MVC 3, tetapi saya masih mendapatkan Error:
"Nama 'ViewBag' tidak ada dalam konteks saat ini"
Saya bahkan telah menghapus dan menginstal ulang MVC 3, namun tidak ada perubahan.
Juga, saya tidak percaya bahwa dll muncul di GAC.
Apa masalah saya? Atau bagaimana menambahkan dll ke GAC?
dll
asp.net-mvc-3
gac
viewbag
efleming
sumber
sumber
Jawaban:
Anda perlu menambahkan konfigurasi Razor khusus MVC ke web.config Anda. Lihat di sini: Ekstensi Razor HtmlHelper (atau ruang nama lain untuk tampilan) Tidak Ditemukan
Gunakan alat peningkatan MVC 3 untuk secara otomatis memastikan Anda memiliki nilai konfigurasi yang benar.
sumber
~/Views
lokasi normal , salin~/Views/Web.config
ke lokasi itu juga.Saya mengalami masalah yang sama. Ternyata saya kehilangan
./Views/Web.config
file tersebut, karena saya membuat proyek dari aplikasi ASP.NET kosong alih-alih menggunakan template ASP.NET MVC.Untuk ASP.NET MVC 5,
./Views/Web.config
file vanilla berisi berikut ini:<?xml version="1.0"?> <!-- https://stackoverflow.com/a/19899269/178082 --> <configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor> <appSettings> <add key="webpages:Enabled" value="false" /> </appSettings> <system.web> <httpHandlers> <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> <!-- Enabling request validation in view pages would cause validation to occur after the input has already been processed by the controller. By default MVC performs request validation before a controller processes the input. To change this behavior apply the ValidateInputAttribute to a controller or action. --> <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> </controls> </pages> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> </system.webServer> </configuration>
Menambahkan
./Views/Web.config
file yang berisi konten ini memperbaiki masalah ini untuk saya.sumber
<add namespace="System.Web.Optimization"/>
Cobalah untuk Membersihkan dan membangun kembali. Ini berhasil dalam kasus saya.
sumber
Saya mengalami masalah yang sama dalam solusi yang telah ditingkatkan ke MVC 5 di Visual Studio 2015.
Di file web.config dalam folder Tampilan (bukan root web.config), saya memperbarui nomor versi yang dirujuk
<configSections>
dari2.0.0.0
ke3.0.0.0
.<configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections>
sumber
Setelah mencoba berbagai hal, ternyata itu adalah VS cache. Anda dapat mengatasinya dengan menghapus file cache yang terletak di:
Saya menutup proyek saya, menghapus file di jalur itu dan membuka kembali proyek saya, membersihkan solusinya dan membangunnya lagi dan masalahnya teratasi
File akan dibuat kembali saat Anda meluncurkan Visual Studio berikutnya
sumber
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
Saya memiliki masalah yang sama dan crimbo memberi saya petunjuk yang benar, itu disebabkan oleh file ./Views/Web.config yang ada tetapi tidak berisi ruang nama yang benar, saya kira ...
Saya membuat proyek MVC5 kosong dan mengimpor ./Views/Web.config ke dalam proyek saya yang ada dan gelombang merah di bawah setiap penggunaan ViewBag hilang!
sumber
Jika Anda menggunakan Visual Studio 2013 dan Anda suka menggunakan MVC 3, Anda mendapatkan kesalahan ini karena Visual Studio 2013 tidak mendukung MVC 3 secara native (bahkan jika Anda mengubah ./Views/web.config), hanya MVC 4: https: // msdn .microsoft.com / en-us / library / hh266747.aspx
sumber
Saya memiliki
./Views/Web.Config
file tetapi kesalahan ini terjadi setelah situs dipublikasikan. Ternyata properti tindakan build pada file tersebut ditetapkan ke,None
bukanContent
. Mengubah ini menjadiContent
mengizinkan penerbitan untuk bekerja dengan benar.sumber
Saya mengalami masalah ini setelah mengubah namespace Default Aplikasi di dialog Properties.
./Views/Web.Config berisi referensi ke namespace lama
sumber
Dalam kasus saya, mengubah halaman web: Versi ke nilai yang tepat menyelesaikan masalah saya, bagi saya nilai yang benar adalah (2.0.0.0 bukan 3.0.0.0):
<appSettings> <add key="webpages:Version" value="2.0.0.0"/> <add key="webpages:Enabled" value="false"/>
sumber
Setelah mencoba semua pendekatan, tidak ada yang berhasil untuk saya karena semua yang saya miliki adalah konfigurasi yang benar. akhirnya
Menghapus semua file dari "temp" dan "% temp%" dari sistem membantu menyelesaikan masalah ini.
Buka perintah Run (Windows + R) dan ketik string di atas dan hapus semua file sementara.
sumber
Jika Anda telah mencoba semua jawaban yang tersedia dan masih tidak dapat menemukan jawabannya, ini mungkin menyelesaikan masalah. Jika Anda memiliki konfigurasi solusi yang berbeda seperti Debug, Rilis, dll., Maka setel jalur keluaran proyek ke 'bin' dan kompilasi proyek. Kembalikan perubahan setelah kompilasi.
VS mencari dll di folder bin
sumber
Saya sudah mencoba menghapus bin dan file obj dan memulai ulang VS dan tidak berhasil.
Saya juga mengalami masalah ini berkali-kali dan sulit untuk diselesaikan setiap saat. Seringkali karena file web.config tidak memiliki versi yang benar dari salah satu referensi. Ini berarti klik pada referensi di Visual Studio untuk melihat versi di tab properti, lalu cocokkan dengan versi di file web.config.
Cara lain adalah (jika mungkin) meningkatkan ke versi yang lebih baru dari kerangka kerja .net dan kemudian menghapus file bin / obj dan memulai ulang Visual Studio. Saya hanya bisa berasumsi itu mengubah sesuatu di
Pemeriksaan cepat dari perbedaan antara file csproj tidak benar-benar menunjukkan perbedaan besar ... Tetapi perbedaan yang ditunjukkannya adalah (Saya telah menambahkan (menghapus) untuk menunjukkan baris lama)
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> (remove) <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>(remove) <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
Di file Web.Config (bukan yang ada di View)
<add key="webpages:Version" value="2.0.0.0" /> (remove) <add key="webpages:Version" value="3.0.0.0"/>
Itu juga ditambahkan (ke file web.config yang sama) tetapi saya menghapusnya secara manual
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
Terakhir, di Package Manager Console, tambahkan
update-package
Jalankan situs web secara lokal dan lihat kesalahan kompilasi yang diperbaiki oleh paragraf kedua saya (cocok dengan versi referensi)
sumber
Saya memperbarui halaman web: Versi di bawah folder ./Views/Web.Config tetapi pengaturan ini juga ada di web.config di root. Perbarui keduanya atau hapus dari root web.config
sumber
Seperti yang telah disebutkan @Wilson Vallecilla. Silakan lakukan langkah-langkah di bawah ini untuk menghapus cache:
Ikuti jalur di bawah ini untuk menemukan file:
C:\Users\your.name.here\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
Saya menutup proyek saya, menghapus file di jalur itu dan membuka kembali proyek saya, membersihkan solusinya dan membangunnya lagi dan masalahnya teratasi
Menghapus File ASP.NET Sementara Anda juga membantu. C: \ Users \ your.name.here \ AppData \ Local \ Temp \ Temporary ASP.NET Files.
Ini berhasil untuk saya.
Terima kasih!
sumber
Untuk MVC5, jika Anda membuat aplikasi dari awal. Anda perlu menambahkan file web.config ke folder Views dan menempelkan kode berikut di dalamnya.
<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor> </configuration>
Perhatikan bahwa untuk MVC 3 Anda harus mengubah versi menjadi 3.0.0.0 di
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Anda mungkin harus menutup dan membuka halaman * .cshtml lagi untuk melihat perubahannya.
sumber