2008-09-07 19 views
5

पूरी तरह से सुनिश्चित नहीं है कि यहां क्या हो रहा है; किसी भी सहायता की सराहना की जाएगी।.NET एमवीसी अस्पष्ट प्रकार संदर्भ

मैं एक नया .NET एमवीसी वेब ऐप बनाने की कोशिश कर रहा हूं। मैं बहुत यकीन है कि मैं इसे ठीक से सेट किया था, लेकिन मैं निम्नलिखित त्रुटि हो रही है:

इस प्रकार
The type 'System.Web.Mvc.ViewPage' is ambiguous: it could come from assembly 
'C:\MyProject\bin\System.Web.Mvc.DLL' or from assembly 
'C:\MyProject\bin\MyProject.DLL'. Please specify the assembly explicitly in the type name. 

स्रोत त्रुटि यह रिपोर्ट है:

Line 1: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 
Line 2: 
Line 3: <asp:Content ID="indexContent" ContentPlaceHolderID="MainContentPlaceHolder" runat="server"> 

कुछ भी बाहर खड़े है कि मैं कर रहा हूँ पूरी तरह से गलत कर रहे हो?

उत्तर

1

यह त्रुटि आमतौर पर कक्षा नामकरण संघर्ष को इंगित करती है। आप दो नामस्थानों का संदर्भ दे रहे हैं या आपने उसी नाम के साथ एक वर्ग बनाया है जिसका उपयोग आप किसी अन्य नामस्थान में कर रहे हैं। मैं यह देखकर शुरू करूंगा कि यह क्या हो सकता है।

1
Inherits="System.Web.Mvc.ViewPage" 

मैं कल्पना करता कि इस, अपने दृश्य codebehind फ़ाइल वर्ग की दिशा में रखे जाना चाहिए आधार ViewPage वर्ग में नहीं।

2

क्या आप कोडबैंड फ़ाइल का उपयोग कर रहे हैं, मुझे CodeBehind = "" विशेषता नहीं दिखाई दे रही है जहां से आप इनहेरिट्स निर्दिष्ट कर रहे हैं? फिर आपको कोडबींड के वर्ग के नाम पर विरासत को इंगित करना होगा।

उदाहरण:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MvcApplication4.Views.Home.Index" %> 

यकीन है कि विरासत में मिली पूरी तरह से योग्य है। यह कक्षा के नाम के बाद नामस्थान होना चाहिए।

3

मुझे लगता है कि आपने अपना एक पृष्ठ "व्यूपेज" नाम दिया है, यह मामला है?

और @Jonathan की तरह उल्लेख किया है, यह बदबू आ रही है:

Inherits="System.Web.Mvc.ViewPage" 

मेरी MVC आवेदन पर, सभी दृश्य पृष्ठों इस बजाय है: रेखा के साथ

Inherits="MySite.Views.Pages.Home" 

या कुछ। आपके एएसपीएक्स पेज मार्कअप में आपके कोड-बैक क्लास नाम पर "इनहेरिट्स" पॉइंट होना चाहिए, न कि वास्तविक वर्ग जो वह विरासत में है। गुण का नाम बल्कि भ्रामक है लेकिन यह पहले के दिनों का एक आर्टिफैक्ट है।

2

मैं एएसपी.नेट एमवीसी बीटा चला रहा हूं और इस त्रुटि का भी सामना कर रहा हूं।

यह तब आया जब मैं एक दृश्य के लिए फ़ाइल के पीछे कोड को हटाने की कोशिश कर रहा था। मैंने @Page निर्देश में "CodeBehind" विशेषता को हटा दिया और System.eb.Mvc.ViewPage को इंगित करने के लिए "इनहेरिट्स" विशेषता को बदल दिया, लेकिन मेरे प्रोजेक्ट में अनछुए फ़ाइल के पीछे वास्तविक aspx.cs कोड छोड़ा।

इस बिंदु पर, अगर मैंने अपनी परियोजना को चलाने की कोशिश की, तो मुझे आपके द्वारा उल्लिखित त्रुटि मिली।

मैंने अपनी परियोजना से दृश्य के लिए aspx.cs (कोड पीछे) फ़ाइल को हटाकर इस त्रुटि को हल किया।

1

प्रतिबिंब में सी: \ MyProject \ bin \ MyProject.DLL खोलें और यह देखने के लिए व्यूपेज देखें कि आपने दुर्घटना से एक को परिभाषित किया है या नहीं।

2

web.config में System.Web.Mvc करने के लिए अपने विधानसभा संदर्भ की जाँच करें।

मेरा स्पष्ट रूप से 2.0.0.0 को निर्दिष्ट कर रहे थे, लेकिन मेरी परियोजना 3.0.0.0

+0

मुझे एक ही त्रुटि मिली जब एमवीसी 2 से एमवीसी 5 तक अपग्रेड किया गया प्रोजेक्ट। Web.config फ़ाइलों (~/और ~/Views /) दोनों में System.Web.Mvc संस्करण को प्रतिस्थापित करने की आवश्यकता है। –

0

मैं इस सप्ताह एक ही सटीक त्रुटि थी संदर्भित किया है।

मेरी Webform.aspx फ़ाइल में जेनरेटर designer.cs फ़ाइल थी। इस फ़ाइल में कक्षा वास्तव में "व्यूपेज" नामित की गई थी। डिज़ाइनर फ़ाइल हटाएं, या क्लास सामग्री को webform.aspx.cs फ़ाइल में ले जाएं और मेरी त्रुटि समाप्त हो गई थी।

किसी को यह त्रुटि होने पर बस इसे बाहर निकाल दें।

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