রেজার এইচটিএমএল হেল্পার এক্সটেনশানগুলি (বা দেখার জন্য অন্যান্য নেমস্পেস) পাওয়া যায় নি


167

ডান্নো যদি এটি পিআর বা বিটাতে ঘটে থাকে তবে আমি যদি একটি এক্সটেনশন পদ্ধতি তৈরি করি তবে HtmlHelperএটি রেজার চালিত পৃষ্ঠায় স্বীকৃত নয়:

namespace SomeNamespace.Extensions {
    public static class HtmlExtensions {
        public static string Foo(this HtmlHelper html) {
            return "Foo";
        }
    }
}

আমি এটি <Namespaces>বিভাগে যুক্ত করেছি Web.config:

<pages>
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <!-- snip -->
    <add namespace="SomeNamespace.Extensions"/>
  </namespaces>
</pages>

পৃষ্ঠাটি দেখার চেষ্টা করার সময় এটি একটি সংকলন ত্রুটি ছুড়ে ফেলে:

@Html.Foo()

আমি যদি ওয়েবফর্মগুলি দিয়ে পৃষ্ঠাটি পুনরায় তৈরি করি তবে এটি ঠিক আছে। চুক্তিটি কি ছিল?

কার্যসংক্রান্ত

আমি @using SomeNamespace.Extensionsযদি আমার রেজার ভিউতে অন্তর্ভুক্ত করি তবে এটি কার্যকর হয় তবে আমি বরং এটির মধ্যে থাকিWeb.config


2
এমনকি workaround আমার জন্য কাজ করে না। এক্সটেনশন পদ্ধতিটি ইন্টেলিজেন্সে প্রদর্শিত হবে, তবে রানটাইম চলাকালীন একটি সংকলন ত্রুটি নিক্ষেপ করবে।
ক্লার্ক

@ ব্যবহারের কার্যবিধির জন্য +1। আমি আমার ক্ষেত্রে এটি পছন্দ।
কেন্ট

@ একসাথে দেখার জন্য কাজ করা ঠিক আছে for তবে একাধিক দর্শনের জন্য কোড পরিচালনা একটি ইস্যুতে পরিণত হয়।
রাহাতুর

উত্তর:


274

বিটা যেহেতু, রেজার বিশ্বব্যাপী নেমস্পেসের আমদানি সংজ্ঞায়নের জন্য একটি আলাদা কনফিগার বিভাগ ব্যবহার করে। আপনার Views\Web.configফাইলটিতে আপনার নিম্নলিখিতগুলি যুক্ত করা উচিত:

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
      <!-- Your namespace here -->
    </namespaces>
  </pages>
</system.web.webPages.razor>

আপনার সঠিক কনফিগার মান রয়েছে তা স্বয়ংক্রিয়ভাবে নিশ্চিত করতে এমভিসি 3 আপগ্রেড সরঞ্জামটি ব্যবহার করুন ।

নোট করুন যে সম্পাদকের দ্বারা পরিবর্তনগুলি গ্রহণ করার জন্য আপনার ফাইলটি বন্ধ এবং পুনরায় খোলার প্রয়োজন হতে পারে।


1
আমি কি অ্যাসেম্বলি রেফারেন্স মিস করছি? এটি System.Web.Mvc.WebViewPage বা কনফিগারেশন বিভাগের যে কোনও ধরণের স্বীকৃতি দেয় না।
ক্লার্ক

4
আমাকে> সিস্টেম.ওয়েব. ওয়েলপেজ.রেজরের একটি রেফারেন্স যুক্ত করতে হয়েছিল এবং এটি এটি বাছাই করে।
TWith2Sugars

4
এটা আমার পক্ষে কাজ করছে না আমি এমভিসি 3 আরসি ব্যবহার করছি, আমি আমার ভিউ ফোল্ডারে ওয়েব নামক স্থানটিতে আমার নাম স্থানটি যুক্ত করেছি। এখনও রেজার পৃষ্ঠাতে আমার এক্সটেনশনগুলি দেখতে পাচ্ছে না। <এক্সটেনশন> ব্যবহার করে ইভেন্টের কাজটি কার্যকর হয় না। @ TWith2Sugars আমি System.Web.WebPages.Razor যোগ করতে এমনকি খুঁজে পাচ্ছি না, আমি System.Web.Razor যোগ করেছি তবে সাহায্য করি নি। আমি এখানে সত্যিই আটকে আছি
ফ্রেডডু

31
আপডেটগুলি দেখার জন্য আমাকে ফাইলটি খুলতে এবং বন্ধ করতে বলার জন্য +1।
আমির

26
এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ এটি মূল ওয়েবকনফিগ নয়, তবে ভিউ ফোল্ডারে ওয়েবকনফিগ!
জি-উইজ

11

গৃহীত উত্তর হিসাবে পরামর্শ হিসাবে আপনি কনফিগার ফাইলের বিভাগে যুক্ত করে সমস্ত দর্শনগুলিতে "ব্যবহার" যুক্ত করতে পারেন।

তবে একক দৃশ্যের জন্য আপনি কেবল ব্যবহার করতে পারেন

সামারনেমস্পেস ব্যবহার করুন। এক্সটেনশনগুলি


6

রেজার ব্যবহার করে একটি এমভিসি 4 অ্যাপ্লিকেশনটিতে আমার একই ত্রুটি ছিল। ওয়েবকনফিগ ফাইলগুলি পরিষ্কার করার প্রয়াসে আমি দুটি webpages:কনফিগারেশন মান মুছে ফেলেছি :

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

একবার আমি এই কনফিগারেশন মানগুলি পুনরুদ্ধার করলে পৃষ্ঠাগুলি সঠিকভাবে সংকলন করবে এবং .Partial()এক্সটেনশন পদ্ধতি সম্পর্কিত ত্রুটিগুলি অদৃশ্য হয়ে গেল।


5

আমার কাছে এই সমস্যাটি ভিএস ২০১৫ সালে ছিল The নিম্নলিখিতটি আমার জন্য এটি সমাধান করেছে:

অ্যাপসেটেটিংগুলিতে "ওয়েবপৃষ্ঠা: সংস্করণ" সন্ধান করুন এবং এটি 3.0.0.0 সংস্করণে আপডেট করুন। আমার ওয়েবকনফিগ ছিল

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

এবং আমি এটি আপডেট

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

3

আমি দেখতে পেয়েছি যে প্রতিটি ওয়েব ফোল্ডারের জন্য আমার ওয়েবকনফাইগে এই বিভাগটি রেখে দেওয়া সমাধান করেছে।

<runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="4.0.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

1
আমি প্রকৃতপক্ষে খুঁজে পেয়েছি যে কোনও কারণে মূল ওয়েবকনফাইগের একটি বাধ্যতামূলক পুনর্নির্দেশ ছিল যা আমার সমস্যা তৈরি করছে (বিশেষত, নির্দেশ 0.0.0.0-2.0.0.0করে 1.0.0.0), এবং /View/web.configফাইলটি ওভাররাইড করে না। (এছাড়াও, আমি বিশ্বাস করি না যে এটি আপনার প্রতিটি ক্ষেত্রে দরকার /View/Subfolder/)
জোব্রোকহাস

1

এই ত্রুটিটি আপনাকে বলেছে যে আপনার প্রকল্পের সাথে রেজার ইঞ্জিন সঠিকভাবে জড়িত নেই।

সমাধান: সলিউশন এক্সপ্লোরার উইন্ডোতে আপনার ওয়েব প্রকল্পে ডান ক্লিক করুন এবং "নুগেট প্যাকেজগুলি পরিচালনা করুন ..." নির্বাচন করুন তারপরে "মাইক্রোসফ্ট এএসপি.নেট রেজার" ইনস্টল করুন। এটি নিশ্চিত করবে যে সঠিকভাবে প্যাকেজ ইনস্টল করা আছে এবং এটি আপনার ওয়েব কোডফাইগ ফাইলটিতে প্রয়োজনীয় এন্ট্রি যুক্ত করবে।



-6

যেহেতু এএসপি.এনইটি এমভিসি 3 আরটিএম বাইরে রয়েছে তাই রেজারের জন্য কনফিগার বিভাগের প্রয়োজন নেই। এবং এই বিভাগগুলি নিরাপদে সরানো যেতে পারে।


আমি ভাবছি যদি এটি সত্য হয়, নিক 4eva। যদি আমি একটি নতুন এমভিসি 3 ওয়েব অ্যাপ্লিকেশন তৈরি করি এবং রেজার ভিউইনজিন বেছে নিই, তবে ভিউস ফোল্ডারে উপস্থিত ওয়েবকনফিগের ডিফল্টরূপে রেজার কনফিগারেশন থাকবে। যদি আমি এগুলি অক্ষম করি তবে রানটাইমে সংকলন ত্রুটিগুলি পেয়ে যাব।
মাইকেলভআর

3
মাইকেলভআর, হ্যাঁ এটি আমার ভুল ছিল। আমি দুঃখিত যে আপনি বিভ্রান্তিতে প্রবেশ করেছেন।
নিক 4eva

এটি কি কোনও ভিবি চালিত এমভিসি প্রকল্পের জন্য গণনা করে? আমি আমার এক্সটেনশন পদ্ধতি ... কোনও এক্সেস আছে stackoverflow.com/questions/4789273/...
Ropstah

এই উত্তরটি ভুল। এই কনফিগার এন্ট্রিগুলি এখনও প্রয়োজন। নতুন প্রকল্পের টেমপ্লেটগুলির মধ্যে ইতিমধ্যে সেগুলি রয়েছে তবে আপনি যদি কোনও এমভিসি 2 অ্যাপ্লিকেশন আপগ্রেড করেন তবে আপনাকে সেগুলি যুক্ত করতে হবে।
মার্চাইন্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.