2010-03-18 12 views
15

मैंने अभी एमवीसी 2 स्थापित किया है और मुझे ऐसा लगता है जो ऐसा दिखता हैत्रुटि "व्यू/व्यू/पेज/home.aspx 'पर व्यू व्यूपेज, व्यूपेज <TViewData>, व्यूउसर कंट्रोल, या व्यूउसर कंट्रोल <TViewData>"

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Home.Master" Inherits="System.Web.Mvc.ViewPage" %>  
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Home 
</asp:Content>  
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">  
    <h2>Home</h2>  
</asp:Content> 

और नियंत्रक सिर्फ दृश्य को वापस कर रहा है।

System.InvalidOperationException: The view at '~/Views/Page/home.aspx' must derive from ViewPage, ViewPage, ViewUserControl, or ViewUserControl.

+0

आप यह सुनिश्चित करें कि कोड आप दिखाया है अंतर्गत आता है करने के लिए '~/दृश्य हैं/पृष्ठ/home.aspx'? –

+0

आपने एक प्रश्न पूछकर मेरी समस्या हल की। धन्यवाद। मैंने देखा कि आपके पास Inherits = "System.Web.Mvc.ViewPage था और इसका उपयोग किया गया था, अब मैं अपने एमवीसी 5 ऐप में रिपोर्टव्यूअर का उपयोग कर सकता हूं! – JoshYates1980

+0

हो सकता है कि आप अपने कोडबैंड- से प्राप्त ऑटो-जेनरेटेड बेस क्लास को बदलना भूल जाएं फ़ाइल, https://stackoverflow.com/a/47433765/3423823 देखें - कम से कम यह मेरी समस्या थी, मैंने कई प्रश्नों में ठोकर खाई जो इस – chriszo111

उत्तर

20

आप अनजाने में उसी एप्लिकेशन में लोड एमवीसी ढांचे के दो संस्करण हो सकते हैं। पुष्टि करने के लिए, http://aspnet.codeplex.com/releases/view/41742 से एमवीसी 2 फ्यूचर्स डाउनलोड करें। इस ज़िप फ़ाइल में एक फ़ाइल MvcDiagnostics.aspx है।

  1. अपनी वेब प्रोजेक्ट की रूट पर MvcDiagnostics.aspx की प्रतिलिपि बनाएँ।
  2. त्रुटि पुन: उत्पन्न करें।
  3. त्रुटि को पुन: उत्पन्न करने के बाद, /MvcDiagnostics.aspx पर जाएं और देखें कि यह ढांचे के कई संस्करणों के बारे में शिकायत करता है (बोल्ड लाल लेटरिंग में होगा)। यदि उपकरण है तो उपकरण को एक संकल्प का सुझाव देना चाहिए।

जब आप पूरा कर लें तो अपनी परियोजना से MvcDiagnostics.aspx को मिटाना न भूलें।

+0

+1 का सुझाव नहीं देते: मुझे एक ही समस्या थी, और मेरे मामले में वास्तव में एमवीसी 2 के दो अलग-अलग संस्करण लोड हुए। मुझे डायग्नोस्टिक्स चीज के बारे में पता नहीं था। हालांकि, जानना अच्छा है। – mnemosyn

+0

हाँ, जो समस्या थी, मैं बस एमवीसी डीएल को वेब प्रोजेक्ट पर प्रतिलिपि के रूप में चिह्नित करने के लिए समाप्त हुआ और यह समस्या ठीक कर दी, धन्यवाद! –

+0

धन्यवाद। इससे मुझे एमवीसी 1.0 से एमवीसी 4.0 तक समाधान माइग्रेट करने में मदद मिली – user2323308

2

मैं MVC 2.0 के लिए मेरी MVC 1.0 परियोजना का उन्नयन इस त्रुटि हो रही थी: लेकिन जब मैं पेज को चलाने मैं इस त्रुटि मिलती है। यदि आप ऐसा कर रहे हैं तो http://weblogs.asp.net/leftslipper/archive/2010/03/10/migrating-asp-net-mvc-1-0-applications-to-asp-net-mvc-2-rtm.aspx

एक नया एमवीसी 2.0 प्रोजेक्ट के खिलाफ अपने web.config को दोबारा जांचें।

1

कर या तो समाधान स्तर पर एक batch->build->clea n या परियोजना स्तर पर एक साफ आम तौर पर इस का ख्याल रखता है अगर आप पहले से हटाने के/परियोजना संदर्भ और से System.Web.Mvc की अवांछित संस्करण (रों) की जगह के कारण परिश्रम किया है * फ़ाइलों .config ...

0

, इस तरह आप परिवर्तन है कि नेत्र-गोलक सब कुछ कर सकते हैं आप ASP.NET MVC 3 Application Upgrader

बेस्ट का उपयोग कर स्रोत नियंत्रण के तहत अपने कोड के साथ ऐसा करने की कोशिश कर सकते। यह आपके जावास्क्रिप्ट को अपडेट करता है जिसे मैं नहीं चाहता था इसलिए मैंने इसे वापस कर दिया, और केवल बदलावों को रखा जो इसे razor के लिए web.config पर बनाता है।

यह सुनिश्चित करना सुनिश्चित करें कि यह क्या करता है और this blog post पर इसका समर्थन नहीं करता है।

0

मैंने अपने कस्टम व्यू इंजन को सीधे RazorViewEngine का उत्तराधिकारी बनाकर इस समस्या को हल किया।

public class MainViewEngine : RazorViewEngine 
{ 
    public MainViewEngine() 
    {... 
}} 

और फिर Global.asax फ़ाइल Application_Start घटना में है कि viewengine दर्ज की:

ViewEngines.Engines.Clear(); 
     ViewEngines.Engines.Add(new MainViewEngine()); 

जाहिर है इस मानता है कि आप रेजर का उपयोग कर रहे हैं।

0

अपने संदर्भ में System.Web.Mvc.dll फ़ाइल के संदर्भ की जांच करें। सुनिश्चित करें कि यह सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll

पर इंगित करता है यदि यह एएसपी.नेट एमवीसी 4 के तहत एक को इंगित करता है निर्देशिका फिर अपनी प्रोजेक्ट फ़ाइल को नोटपैड में खोलें।के लिए

<Reference Include="System.Web.Mvc"> 
    <Private>False</Private> 
</Reference> 

यह देखो

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35, processorArchitecture=MSIL" /> 

को बदला जाना चाहिए यह विशिष्ट MVC संस्करण को इंगित करने में मदद मिलेगी

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^