2012-08-30 24 views
13

के साथ विस्तार के तरीके मैंने एक विस्तार विधि बनाई है और मेरे web.config फ़ाइल में अपना नामस्थान शामिल किया है। एक्सटेंशन विधि ठीक काम करती है और परीक्षण कोड द्वारा ठीक से accesed है। समस्या यह है कि, मुझे अभी भी नामस्थान से संबंधित कोई त्रुटि नहीं मिल रही है।एमवीसी 4 और रेजर

मैं हो रही है एएसपी नेट त्रुटि संदेश है:

CS1061: 'System.Uri' 'IsCurrentUrl' प्रकार का एक पहला तर्क को स्वीकार करने 'IsCurrentUrl' और कोई विस्तार विधि के लिए एक परिभाषा शामिल नहीं है 'System.Uri' पाया जा सकता है (क्या आप एक प्रयोग निर्देश या असेंबली संदर्भ खो रहे हैं?)

नीचे संबंधित कोड है।

Web.config:

<system.web> 
    <httpRuntime targetFramework="4.5" /> 
    <compilation debug="true" targetFramework="4.5" /> 
    <pages> 
     <namespaces> 
      <add namespace="System.Web" /> 
      <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.Routing" /> 
      <add namespace="System.Web.WebPages" /> 
      <add namespace="MyMainSite2.Library.Extensions" /> 
     </namespaces> 
    </pages> 
</system.web> 

एक्सटेंशन विधि कोड:

namespace MyMainSite2.Library.Extensions 
{ 
    public static class UriExtensions 
    { 
     #region Public Static Methods 

     public static bool IsCurrentUrl(this Uri uri, string url) 
     { 
      if (String.IsNullOrWhiteSpace(url)) 
       return false; 

      url = url.Trim().ToLower(); 
      string absolutePath = uri.AbsolutePath.Trim().ToLower(); 

      if (!url.StartsWith("/") && absolutePath.StartsWith("/")) 
       absolutePath = absolutePath.Remove(0, 1); 

      bool match = absolutePath == url; 

      return match; 
     } 

     #endregion 
    } 
} 

उस्तरा कोड:

@model MyMainSite2.UI.Web.Models.Shared.TopMenuModel 

@foreach (var item in this.Model.Items) 
{ 
    if(this.Request.Url.IsCurrentUrl(item.Url)) // this line is failing because UriExtensions.IsCurrentUrl is not being found 
    { 
     @:<li class="current"> 
    } 
    else 
    { 
     @:<li> 
    } 

    @:<a href="@item.Url">@item.Text</a></li> 
} 
+0

क्या आपको व्यू फ़ाइल में कथन का उपयोग करने का अधिकार मिला है? – dtsg

+0

नहीं। मैं नामस्थान को web.config में डाल रहा हूं ताकि मुझे प्रत्येक दृश्य फ़ाइल के लिए ऐसा करने की आवश्यकता न हो। – rhughes

+0

क्या आपने इसे 'MyMainSite2.Library.Extensions.UriExtensions' में बदलने का प्रयास किया है? – dtsg

उत्तर

22

जवाब petro.sidlovskyy द्वारा दिया गया था।

मैं दृश्य वेब.कॉन्फिग के बजाय मुख्य वेब.कॉन्फिग में नामस्थान जोड़ रहा था।

जब मैंने दृश्य फ़ोल्डर में Web.config में नामस्थान जोड़ा, तो नामस्थान को दृश्य द्वारा पहचाना गया था, और इस प्रकार समस्या हल हो गई थी।

0

मैं सिर्फ यह पोस्ट करना चाहता हूं कि मुझे कुछ महीनों के लिए यह समस्या हो रही है, और मैंने लाइन द्वारा लाइन एएसपी.नेट साइट पर मार्गदर्शिका का पालन किया, और मैं इंटेलिजेंस वापस पाने में सक्षम था रेजर फाइलें मुझे आशा है कि इस मदद करता है अन्य लोगों के साथ-साथ अपने बालों को खोने को रोकने 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

:

यहाँ की कड़ी है।

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