Setelah signifikan refactoring dalam MVC 4 aplikasi, dan pisau Cukur menunjukkan kesalahan ini saat debugging Views:
nama 'model' tidak ada dalam konteks saat ini.
Ini adalah menyinggung baris kode:
@model ICollection<DataSourceByActive>
Saya tahu bahwa penggunaan @model
adalah benar.
Mengapa hal ini terjadi? Bagaimana saya bisa memperbaikinya?
Saya pikir anda telah mengacaukan web.config file yang hidup di dalam folder Views.
Membuat sebuah proyek baru yang menargetkan hal yang sama .NET framework dan copy Views/web.config di atas satu dalam proyek anda saat ini. Hal ini akan memperbaiki masalah anda.
Juga, sebagai Dudeman3000 berkomentar, jika anda memiliki Tempat dalam MVC project mereka semua memiliki Pandangan\web.config` file terlalu.
Pastikan anda memiliki yang berikut di kedua situs Web.configdan pandangan direktori Web.config
di appSettings
bagian
<add key="webpages:Version" value="2.0.0.0" />
Untuk MVC5 gunakan:
<add key="webpages:Version" value="3.0.0.0" />
(Dan itu hanya ada di utama Web.config` file.)
Saya memiliki masalah yang sama, saya membuat sebuah proyek baru dan disalin web.config file seperti yang direkomendasikan dalam jawaban oleh Gupta, tapi itu tidak't memperbaiki hal-hal untuk saya. Aku memeriksa jawaban oleh Alex dan Liam, saya pikir baris ini harus telah disalin dari web baru.config, tapi sepertinya baru proyek itu sendiri tidak't memiliki baris ini (MVC5):
<add key="webpages:Version" value="3.0.0.0" />
Menambahkan baris ke pandangan/web.config memecahkan masalah bagi saya.
Mengubah baris berikut di web.konfigurasi dari tampilan folder diselesaikan kesalahan yang sama.
Dari
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Untuk
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Dalam kasus saya, saya baru-baru ini diperbarui dari MVC 4 untuk MVC 5, yang sekrup web.config cukup parah. Artikel ini sangat membantu.
Intinya adalah bahwa anda perlu memeriksa semua versi nomor referensi di web anda.config dan Pandangan/web.config untuk memastikan bahwa mereka adalah referensi yang benar versi upgrade yang terkait dengan MVC 5.
I've menemukan solusi. Jika anda ingin memperbarui razor versi atau mvc 4 ke 5, mengubah beberapa baris.
Kode lama di Pandangan/web.config
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
Diganti dengan
<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>
sectionGroup
harus berubah juga.
Dalam kasus saya, berikut kode yang ditemukan untuk menjadi berguna. Tempatkan kode di bawah ini di Web.config file dalam folder Views.
<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>
Setelah kode diperbarui, pastikan untuk membersihkan dan membangun kembali solusi. Saya berharap ini akan membantu anda keluar!
Tidak ada jawaban yang bekerja untuk saya, tapi saya menemukan apa yang apa bekerja untuk saya dengan membandingkan .csproj
file proyek yang berbeda. Berikut panduan edit ke .csproj
XML-file soal pisau Cukur-intellisense masalah bagi saya, mungkin hal ini dapat membantu orang lain yang telah mencoba semua jawaban yang lain tidak berhasil. Kuncinya adalah untuk menghapus setiap kasus <Pribadi>Palsu</Swasta>
di <Referensi>
's:
<ItemGroup>
<Reference Include="Foo">
<Hintpath>path\to\Foo</Hintpath>
<!-- <Private>False</Private> -->
</Reference>
<Reference Include="Bar">
<Hintpath>path\to\Bar</Hintpath>
<!-- <Private>True</Private> -->
</Reference>
</ItemGroup>
Saya don't tahu bagaimana mereka sampai di sana atau apa yang mereka lakukan, mungkin ada seseorang yang lebih pintar dari saya dapat menambahkan informasi tersebut. Aku hanya senang untuk akhirnya memecahkan masalah ini.
Untuk beberapa alasan web saya.config punya 0.0.0.0 di oldVersion atribut:
<runtime>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
</runtime>
berubah untuk 1.0.0.0 solusi:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
</dependentAssembly>
Dalam rangka untuk memecahkan masalah ini saya memastikan bahwa saya upgrade ke versi terbaru versi MVC menggunakan NuGet dan Package Manager Console.
Menginstal Paket Microsoft.AspNet.Mvc -Versi 5.2.4
Kemudian ditingkatkan ke versi Razor
Menginstal Paket Microsoft.AspNet.Razor -Versi 3.2.4
Kemudian saya mengubah semua web.config file untuk mencerminkan perubahan. Seperti yang anda akan lihat di bawah ini:
Di web utama.file konfigurasi, pastikan bahwa halaman web:versi ini adalah benar. Ini adalah di mana itu bisa ditemukan (mengabaikan kunci yang lain):
<configuration>
<appSettings>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
</configuration>
Kemudian mencari versi lain yang tercantum dalam sidang, memeriksa versi majelis terhadap versi library yang tercantum dalam referensi proyek! Anda mungkin tidak perlu semua ini.
<system.web>
<compilation debug="true" targetFramework="4.6">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
</system.web>
Runtime assemblyBinding harus menunjukkan "versi baru" dan juga, melihat di mana ia membaca versi baru 5.2.4.0? Tetapi juga memeriksa semua versi lain.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.2.4.0" newVersion="5.2.4.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
KEMUDIAN pada Tampilan Web.Bagian Config, pastikan bahwa pisau Cukur adalah versi yang benar:
<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>
<configuration>
Dan Lastlt ada halaman-Halaman bagian dari Tampilan Web.Config
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
Aku punya masalah yang sama ketika menyebarkan ke Azure Layanan Aplikasi
Dalam kasus saya itu karena ~/Views/Web.config itu't termasuk dalam proyek.
Bekerja di IIS Express tapi ketika saya dikerahkan ke azure, aku punya kesalahan yang sama. Dengan tidak termasuk dalam .csproj file, itu bukan't dikerahkan.
Solusinya adalah untuk memastikan ~/Views/Web.config ini termasuk dalam proyek.
Jika anda pergi ke solution explorer dan klik "Tampilkan semua file" ikon, kemudian membuka Pandangan anda mungkin melihat unincluded Web.config di bawah sana.
Menambahkannya dalam, mempublikasikan ulang, dan bob's pamanmu.
Dalam kasus saya, masalah adalah bahwa setelah meng-upgrade proyek dari MVC 4 untuk MVC 5 entah mengapa aku merindukan versi perubahan dalam Pandangan/web.config:
<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">
Itu masih lama versi 2.0.0.0. Setelah mengubah versi 3.0.0.0 segala sesuatu mulai bekerja tepat.
Juga, karena masalah ini, Visual Studio 2015 Community Edition akan mulai bashing CPU (30-40% penggunaan di idle) setiap saat aku akan membuka .cshtml file.
Bagi saya, masalah yang saling bertentangan .NET versi di salah satu perpustakaan yang saya baru-baru ini diimpor. Perpustakaan saya yang diimpor disusun untuk 4.5.2 dan ASP.NET MVC situs saya yang diimpor itu menjadi target 4.5. Setelah mengkompilasi kata lib selama 4,5 website akan comppile.
Juga, ada tidak ada kesalahan kompilasi, tapi masalah itu dilaporkan sebagai "peringatan". Jadi pastikan untuk membaca semua peringatan jika ada.
Dalam kasus saya saya hilang @ pada awal foreach
@foreach (var item in Model)
{
<tr class="clickable-row">
<td class="clickable-field">
@Html.DisplayFor(modelItem => item.Label)
</td>
<td class="clickable-field hidden-xs">
@Html.DisplayFor(modelItem => item.Value)
</td>
</tr>
}
Saya mencoba untuk menambahkan sebuah view yang berada di luar dari saya "Pandangan" folder (hanya untuk mengatur kode saya berbeda, saya kira), ketika aku punya masalah ini. Membuat tampilan di dalam Views (sebagai oleh konvensi) soal itu.
jika anda mengambil masalah ini tanpa perubahan apapun pada proyek anda seperti saya, anda perlu mengubah web anda.config yang ditempatkan di Folder View. hanya menulis baris baru dengan Memasukkan atau Menghapus baris kosong . kemudian menyimpan web anda.config dan membangun kembali. masalah saya diselesaikan dengan solusi ini