'ViewBag' adı mevcut bağlamda mevcut değil - Visual Studio 2015


100

ASP.NET'te yeniden geliştirmeye başlıyorum ve Visual Studio'da küçük bir hatayla karşılaştım. .Cshtml dosyalarım, birkaç ustura işlevini kullanırken hatalar gösteriyor. Örneğin "'ViewBag' adı mevcut bağlamda mevcut değil". Burada bir resim var:

visual studio 2015'teki sorunun ekran görüntüsü

Bir demo proje kullanıyorum. Projeyi burada bulabilirsiniz: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

Diğer birkaç iş parçacığını inceledim ve çoğu web.config dosyalarını güncellemenizi öneriyor. Bu 2 yapılandırma dosyası zaten mevcut ve oldukça popüler bir demo olduğundan, içinde gerekli tüm yapılandırmaya sahip olduğunu varsayıyorum. Elbette bu yapılandırma dosyalarına baktım ve gerçekten önerilen çözümleri içeriyorlar.

Diğer detaylar:

  • Çözümü zaten temizle ve yeniden inşa ettim ama bu hiçbir şeyi değiştirmedi.
  • Tamamen yeni bir MVC projesi oluşturduğumda işe yarıyor
  • Arkadaşımın sorunu aynı ve ikimiz de VS 2015 ve Windows 10 kullanıyoruz
  • Hala uygulamayı çalıştırabilirim ve çalışıyor.

Şimdiden teşekkürler.


Hala çalıştığında, bu sadece arka plan derleyicisinde bir hatadır. <Proje Adı> .suo dosyasını silmeyi deneyin.
Henk Holterman

hangi projeyi yönetiyorsun temel? pislik, yönlendirme?
Prashant Ghimire

1
@Henk maalesef bu işe yaramadı.
Michjuh

@Prashant Hem temel projeyi hem de yönlendirme projesini denedim. Sorun her ikisinde de ortaya çıkıyor.
Michjuh

Çözdün mü? Aynı problemi yaşadım @Michjuh
Burk

Yanıtlar:


124

Tüm doğru yapılandırmaya sahip olmama rağmen bu sorunu yaşadım.

Razor görünümlerinin ViewBag, Model ve HtmlHelpers'ı tanımasını engelleyen Bileşen Önbelleğinde bazı bozuk dosyalar olduğu ortaya çıktı . Bu dosyaları silmek sorunu çözdü (bu dosyaların iyi sürümleri Visual Studio'yu bir sonraki açışımda oluşturuldu).

Dosyalar burada bulunur:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

Dört dosyanın tümünü silin:

  • Microsoft.VisualStudio.Default.cache
  • Microsoft.VisualStudio.Default.catalogs
  • Microsoft.VisualStudio.Default.err
  • Microsoft.VisualStudio.Default.external

Daha sonra aynı sorunu diğer birkaç geliştirici makinesinde gördüm ve bu düzeltme hızlı bir şekilde çözdü.


9
Harika, bu benim için sorunu çözdü. Ayrıca, Geçici ASP.NET Dosyalarınızı silmenin de yardımcı olduğunu buldum. C: \ Users \ your.name.here \ AppData \ Local \ Temp \ Geçici ASP.NET Dosyaları
Kevin

Bu benim için de düzeltildi. Gönderdiğiniz için teşekkürler!
Caverman

Bu, .net 4'ün 4.5.2'ye yükseltilmesi ve mvc 3'ün 5'e yükseltilmesinden kaynaklanan sorunumu çözdü
Joe Phillips

Benim sorunum, modelimin özelliklerinin tanınmamasıydı. Bu düzeltme sorunumu hemen çözdü.
jkerak

5
benim klasörüm 15.0_7e8de76c \ ComponentModelCache for VS 2017.
Kevin .NET

40

web.configGörünümler klasöründeki dosyanın ayarlarında sürüm numaralarını güncelleyin .

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

MVC sürümünü nuget aracılığıyla güncellediyseniz, şunlar olmalıdır:

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Diğer bağımlılık sürümlerinin de güncellenmesi gerekebilir. Görünümler için MVC yardımcıları ve nesnelerindeki derleme ve ad alanı sorunları, genellikle web.configGörünüm klasörlerindeki karışık dosyalarla ilişkilidir .


9
5.2.2.0 yerine 5.2.0.0 sürüm numarası girmem gerekse de bu benim için çalıştı. Başvurular> System.Web.MVC'ye gidip Özellikler'i seçerek hangi sürüme sahip olduğunuzu görebilirsiniz. Yardım için teşekkürler
user2233949

@ user2233949, @Benjamin MVC sürümünü kullanıyorum 4.0.0.0, özelliklerden görebiliyordum. Benim durumumda düzeltme ne olmalı?
Zeeshan

Tüm web.config dosyalarınızı kontrol edin ve hepsinin doğru ana bilgisayar sürümünü kullandığından emin olun. Bazen, üst görünüm klasörlerinde ayarları geçersiz kıldığınızda, sorun düzeltilmeden kayabilir.
Benjamin Anderson

1
Diğer tüm önerileri denedim ama bu benim için 5.2.3.0 kullanarak çalıştı. Teşekkürler Benjamin
Mitch

1
Bu benim için doğru cevaptı. Ayrıca web.config'i değiştirdikten sonra, tüm dosyalarınızı ve dosyalarınızı kapatmayı *.cshtmlve *.vbhtmlçözümü temizleyip yeniden oluşturmayı unutmayın . VS 2019 16.1.2
Štěpán Havránek

22

Uygulama ayarlarında "web sayfaları: Sürüm" ü bulun ve 3.0.0.0 sürümüne güncelleyin. Web.config dosyam vardı

<add key="webpages:Version" value="2.0.0.0" />

ve onu güncelledim

<add key=”webpages:Version” value=”3.0.0.0″ />

1
Her iki satırı da kaldırdım (webpages.Version, webpages.Enabled) ve MVC 5.2'de iyi çalışıyor gibi görünüyor
Grappachu

Bu, Web.config, proje kökü ve herhangi bir alanın Web.configs sürümünün her iki sürümünde de güncellenmelidir.
Sonu K

Teşekkür ederim. Benim durumum için, sorunlu etiketler <configuration> - <configSections> - <sectionGroup name = "system.web.webPages.razor"> altında <sectionGroup name = "system.web.webPages.razor"> değiştirmem gerekiyor, Sürüm 3.0.0.0'ı kullanmak için <section name = "host"> ve <section name = "pages">
Hong

Önbelleği herhangi bir yerden kaldırmak (dahil Temporary ASP.NET Files) yardımcı olmadı, ancak bu cevap yaptı .
wha7ever

Bu ayar ne anlama geliyor ? Neye karşılık gelir? Uygulamanızda hangi sürüme bağlı olduğunuzu nasıl belirliyorsunuz?
jpmc26

18

Yanlışlıkla kaldırılmış web.configgelen Viewsgereksiz olduğunu düşünerek, klasör. Geri koyduğumda çalışmaya başladı.


13

Güneşin altında her şeyi denedikten sonra çıkıyor şey benim modifiye etmişti System.Web.WebPages.Razor <sectionGroup>in /Views/Web.Configuygun CamelCase gelen System.Web.WebPages.Razorbir all-küçük harfe system.web.webpages.razorsonuçta benim ölümü oldu.

Bunun, bu problemde başka bir zavallı kişiye yardımcı olabileceğini umuyoruz ...

Referans için bu doğru giriştir (benim senaryom için)

<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"> 

3
Benimki tamamen küçüktü ama sorunumu çözmedi.
Paul Totzke

Kutsal sazan. Bu aynı zamanda benim ölümümdü. Bunu keşfettiğine inanamıyorum, @jbwedtech.
Luke Puplett

Bende de küçük harf vardı ve durumu değiştirmek sorunu çözmedi.
Andy Brown

6

Bu sorunla daha çok karşılaştım ve sonunda bunun olduğunu keşfettim çünkü görünümler klasörü içermelidir kendi web yapılandırması


2
Ama bu web.config dosyasında ne olması gerekiyor? Otomatik olarak oluşturulması gerekmiyor mu? (güncelleme) Neye sahip olması gerektiğini ve nasıl oluşturulduğunu
bulduk

Evet, haklısın, projemde Web.Config daha önce yoktu (evet otomatik olarak oluşturmalı ama önceki geliştiriciden bir proje aldı, neden sildiğinden emin değilim). Görünümler klasörleri için Web.Config dosyası ekledikten sonra çalıştı.
user3559462

5

Bazen web.config ayarlarında sürüm numaralarını değiştirmek yeterli değildir. Bu sorun, Visual Studio 2015'te mvc4 aracı olmadığı için oluşur.

Çözüm, projenizi MVC 5'e yükseltmektir. Sorunu tamamen çözer. Bu sayfadan yardım alabilirsiniz. Açıkça açıklıyor.

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web- api-2

Bu arada, Visual Studio ekibi ilk güncellemeyle Visual Studio 2015'e mvc4 desteği ekleyeceklerini açıkladı.


2

oyuna geç kaldı ama bu çözümlerden hiçbiri benim için işe yaramadı.

VS 2017'ye yükselttim ve site çalıştı, ancak Visual Studio derleyicisi .cshtml dosyalarının çoğunu bozdu

TLDR;

mysolution.sln yanlış sürüme sahip

sln diff

bu nedenle, daha yeni VS ile yeni bir çözüm oluşturmak ve bunu kendinizle karşılaştırmak ve sürüm bilgilerini kopyalamak istiyorsunuz.

tam yükseltme adımları:

  1. .sln dosyasının VS için doğru sürüme sahip olduğundan emin olun
  2. VS> Nuget Manager> Updates'de MySolution'a sağ tıklayın> tüm güncellemeleri çalıştır
  3. VS> Uygulama> Hedef Çerçeveyi güncelle (benim durumumda 4.5.2) MySolution'a sağ tıklayın
  4. .config dosyalarındaki herhangi bir sürüm sorununu düzeltin (yani RAZOR'dan 3.0.0.0'a)
  5. derleyicideki herhangi bir kod sorununu düzeltin (benim için ForEach belirsizdi)

Projem VS2013'te başladı, VS2017'ye bastığımda bu hataları görmeye başladım ama her şey hala iyi derlendi, bu yüzden ne olduğunu anlamaya çalıştım ama çok zor değil. Bir görünümün açılması çok sayıda hata yarattığı için sorun haline geliyordu. Şimdi VS2019'tayım ve düzeltmenizle karşılaştım; harikasın! .Sln'mde 14.0.25123.0 vardı ve 16.3.9 olacaktı. Ayrıca çerçeveyle ilgili tüm sürüm sorunlarını düzelttim. Tüm güncellemeleri tam olarak test etmek için zamanım olmadığı için nuget paketlerini güncellemem gerekmedi (neyse ki).
Zonus

1

Bunun için bir iş gününü çok boşa harcadım. Bu (ve diğer) gönderilerdeki her şeyi boşuna denedim. Sonunda projeyi farklı bir şekilde açmam gerektiğini anladım. Mevcut bir web sitesini Visual Studio 2015, MVC5, .NET framework 4.5.2'ye yükselttim ve Windows 10 kullanıyorum, ancak cevabın her yazılım uygulamasının diğer sürümleri için aynı olacağından şüpheleniyorum.

Bu yüzden bir web sitesi açmayı seçtiğim menü seçeneği:

görüntü açıklamasını buraya girin

Bunun yerine bu menü seçeneğini kullanarak projeyi tanımlayan csproj dosyasını açtım:

görüntü açıklamasını buraya girin

Daha sonra birçok kişinin başvurduğu "temiz çözüm" seçeneğine sahip oldum:

görüntü açıklamasını buraya girin

Ancak buna ihtiyacım bile yoktu - her şey yolunda gitti! Her neyse, sonraki problemlere geçtim ...


1

Denetleyiciyi ekledim

  • 1. Adım: Ekle> Sınıf
  • 2. Adım: UserController
  • .
  • .
  • .

ilgili kod oluşturuldu:

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

Adım 1'i şu şekilde değiştirerek hatalarım değişti:

  • 1. Adım: Ekle> Denetleyici
  • Adım 2: Kullanıcı Denetleyicisi
  • .
  • .
  • .

ilgili kod oluşturuldu:

namespace SampleApp.Controller {
    public class UserController : Controller {
    }
}

Sorun şuydu: Sınıfımı Controller'dan devralmamıştım

Hatamdaki diğer mesajlar - hepsi bu sorundan kaynaklanıyor:

CS0117 hatası: 'ModelState', 'IsValid' için bir tanım içermiyor

CS0103 hatası: 'RedirectToAction' adı mevcut bağlamda mevcut değil

CS0103 hatası: 'Görünüm' adı mevcut bağlamda mevcut değil

CS0103 hatası: 'ViewBag' adı mevcut bağlamda mevcut değil

CS0103 hatası: 'Json' adı mevcut bağlamda mevcut değil

Umarım bu değişiklik, ilk adımlarında dikkat etmemiş olanlara yardımcı olur.


1

Bu konunun (ve diğerlerinin) her çözümünün / numarasının en az% 90'ını denedikten sonra, sonunda çözdüm !! Spoiler uyarısı, mantığın izi yok, şu sözde "çözüm": Çözümü tüm sekmeler kapalıyken çalıştırmak nihayet işe yaradı, başka hiçbir şey beni kurtaramazken "ViewBag & Co mevcut bağlamda mevcut değil" ... Uyarıldın, mantık yok!

Umarım bir gün birine yardımcı olur ^^


1

Benim durumumda, bu sorunu yalnızca bilgisayarımda yalnızca bir proje için yaşadım. Projem VS2012'de iyi çalıştı ancak VS2017'de açıldığında bu sorunu yaşıyordu.

Benim için buradaki ana sorun önbellekti. Projem Razor ve MVC için dll'nin eski önbelleğe alınmış sürümlerine işaret ediyordu ve ViewBag gibi daha yeni sürümlerde eklenen özellikleri bulamıyordu. ViewBag, Razor sürüm 3'te eklendi, ancak Razor sürüm 2'yi önbelleğe aldığım için ViewBag'i bulamadı (ancak sürüm 2'de bulunan diğer şeyleri bulabilirdi). Ancak, kabul edilen cevapta olduğu gibi önbelleği temizlemek sorunumu çözmedi. Yapılandırma dosyalarını Razor için "2 yerine sürüm 3 kullan" ve MVC için "4 yerine sürüm 5 kullan" diyecek şekilde değiştirmemiz, ardından VS'yi kapatmamız, önbelleği kaldırmamız ve projeyi açıp yeniden oluşturmamız gerekiyordu. Sonra işler düzeldi. Aşağıda daha ayrıntılı talimatlar bulunmaktadır.

Sorunumu çözmeme yardımcı olan değişiklik dizisi:

  1. "Görünümler" klasörünün Web.config dosyasında,
    • MVC sürümü 4.0.0.0 ila 5.0.0.0 olarak ayarlanmıştır
    • Razor sürümü 2.0.0.0 ila 3.0.0.0 olarak ayarlandı

İşte benim durumumdaki şu satırlar:

<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>

(notlar: 1) sürümleriniz farklı olabilir, sadece benim durumumda ne yapılması gerektiğini söylüyorum 2) Kısaca "..." ile bazı şeyleri atladım 3) MVC sürümünüz 5.3.2.0 gibi bir şey olsa bile Razor'un sürümüyle aynı olan 5.0.0.0'ı girmelisiniz - 3.0.0.0'da tüm sıfırları girin)

  1. Ana yapılandırma dosyasında (en üst düzeydeki) webPages:version2.0.0.0'dan 3.0.0.0'a değişir .

  2. Bu değişiklik muhtemelen çözümü etkilemedi ama yine de bahsedeceğim. "Görünümler" klasörünün <namespaces>bölümünün, projenin kök dizinindeki ana .conifg dosyasıyla tam olarak aynı içeriğe sahip olduğundan emin olun, örneğin:

<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>
  1. Son olarak, VS'yi kapatın. %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCacheFenton tarafından (şu anda) kabul edilen cevapta önerildiği gibi (veya doğru yolunuz ne olursa olsun) tüm önbellek dosyalarını silin . Ayrıca .scanyanıtta bahsedilmese bile dosyayı silin . İşiniz bittiğinde VS'yi açın, Projenizi temizleyin ve Yeniden Oluşturun. Yapılacaklar gerektiğini an çalışmıyor. Benim için çalıştı.

0

Kapatıp tekrar açmak benim için çalıştı. Visual stüdyosunu yeniden başlatmayı deneyebilirsiniz.


Şaka yanıtı gibi geliyor ama bu benim için işleri düzelten şeydi. omuz silkme
Douglas Timms

0

Aşağıdakileri .cshtml sayfamın üstüne ekleyerek sorunu çözebildim

@{ViewBag.Title = "Title";}

Yeniden derledikten sonra bu satırı silebilirdim ve hata gitmişti.


0

Benim görüşümden biriyle benzer bir sorunla karşılaştım. Benim durumumda çözümü temizledim ve onu ve çalışmalarını yeniden inşa etmeye çalıştım .



0

Ben de aynı sorunla karşılaştım. Clean, Build ve Rebuild çözümünü denedim ama işime yaramadı.

Sonunda aşağıdaki gibi yaptım:

  1. Windows Tuşu + R'ye basın
  2. Tür % temp%
  3. hit Enter
  4. Tüm dosyaları silin (Silinmemiş birkaç dosya kalırsa sorun olmaz)

Umarım sizin için de işe yarar.


0

İstemcimin uygulamalarından birini ASP MVC 4'ten ASP MVC 5'e yükselttikten sonra, cshtml sayfalarında Html Helpers ve ViewBag ile ilgili tasarımcı hataları aldık.

Bu sorunları düzeltmek için aşağıdakileri yaptığınızdan emin olun: Nuget'ten Asp.NET Web Yardımcıları Kitaplığı Kurun Projenin Web.config dosyasını açın ve örneğin Nuget paketlerini yüklerken güncellenmemişlerse bağlamaları güncelleyin

<dependentAssembly>
  <assemblyIdentity name=”System.Web.Mvc” publicKeyToken=”31bf3856ad364e35″ />
  <bindingRedirect oldVersion=”0.0.0.0-5.2.2.0″ newVersion=”5.2.2.0” />
</dependentAssembly>

Uygulama ayarlarında "web sayfaları: Sürüm" ü bulun ve 3.0.0.0 sürümüne güncelleyin. Web.config dosyam vardı

ve onu güncelledim

Visual Studio'yu yeniden başlatın ve yeniden oluşturun. Projeniz için bin klasörünü silmeniz gerekebilir

Şunu ziyaret edin: https://lajak.wordpress.com/2014/11/16/asp-mvc-5-viewbag-does-not-exist-in-the-current-context/


-1

Diğer her şeyi denedikten ve biraz hayal kırıklığına uğradıktan sonra, MVC5 uygulamamdaki .NET çerçevesini 4.5'ten 4.5.2'ye yükselttim. Bir şekilde sorunumu çözdü. Umarım yardımcı olur.


-4

Web.config'de değiştirmeyi çözdüm

 <add key="webpages:Enabled" value="false" />

ile

 <add key="webpages:Enabled" value="true" />

Sadece bu aşağı oldu neden oy eklemek - gerçek görünümü inanıyorum bir tarayıcıdan görülebilir olmasını mümkün kılmasıdır
mtbennett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.