@ ঘোষণার ব্যবহারের পরিবর্তে রেজার পৃষ্ঠাগুলিতে কীভাবে অতিরিক্ত নেমস্পেস যুক্ত করবেন?


146

pages/namespacesওয়েবকনফিগের উপাদানটিতে নামের স্থান পেতে আমার কী ধরণের যাদু ব্যবহার করতে হবে ?

<pages>
    <namespaces>
        <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="System.Web.Helpers"/>
        <add namespace="MyCustomHelpers"/>
    </namespaces>
</pages>

উপরের শুধু কাজ করতে চান না । আমি জানি যে নেমস্পেসটি ঠিক আছে কারণ যখন আমি @using MyCustomHelpersপৃষ্ঠার শীর্ষে রাখি তখন এটি যাদুতে কাজ করে।

এটি এমন যাতে আমি আমার সমস্ত পৃষ্ঠার শীর্ষে Html.SomeFunction()না রেখে কাজ করতে @usingপারি


1
আপনি এমভিসি 3 এর কোন রিলিজ ব্যবহার করছেন?
মার্চাইন্ড

আমি এমভিসি 3 প্রিভিউ ব্যবহার করছিলাম তাই অন্য উত্তরগুলি আমার পক্ষে কাজ করেছে এবং এখনও আপগ্রেড করার পরেও কাজ করে ... তবে আপনার উত্তরটি নতুন সংস্করণের জন্য আরও উপযুক্ত বলে মনে হচ্ছে - যা আমি শীঘ্রই আপগ্রেড করব। লজ্জা আমি দুটি উত্তর গ্রহণ করতে পারি না।
MyNameIsJob ob ই

উত্তরের মন্তব্যে এটি পরিষ্কার নয়, তবে এমভিসি 4 তে নেমস্পেসটি ওয়েব C কনফিগ ফাইলটিতে যুক্ত করা দরকার \ ভিউ ফোল্ডারে, অ্যাপ্লিকেশন ওয়েব.কনফিগ নয়। <system.web.webPages.razor>কনফিগ অধ্যায় ইতিমধ্যে যে Web.Config মধ্যে উপস্থিত করা উচিত!
বেন ম্যাকআইন্টির

উত্তর:


163

আপডেট : দয়া করে আমার আপডেট হওয়া উত্তরটি একবার দেখুন যা এমভিসি 3 আরসির ক্ষেত্রে প্রযোজ্য: রেজার এইচটিএমএল হেল্পার এক্সটেনশানগুলি (বা দেখার জন্য অন্যান্য নেমস্পেস) পাওয়া যায় নি

এটি এমভিসি 3 পূর্বরূপ 1 এবং এমভিসি 3 বিটা (ঠিক আজ প্রকাশিত হয়েছে) এর মধ্যে পরিবর্তিত হয়েছে। পূর্বরূপে 1 রেজার ওয়েবফোর্ডের নেমস্পেসগুলি কনফিগার বিভাগটি ব্যবহার করেছে। তবে বিটাতে একটি নতুন কনফিগার বিভাগ রয়েছে যা ওয়েবফোর্ডগুলি থেকে পৃথক। আপনাকে আপনার ওয়েব কোডফাইগ ফাইলে ফোলিং যোগ করতে হবে (বা কেবলমাত্র টেমপ্লেট থেকে একেবারে নতুন প্রকল্প দিয়ে শুরু করুন):

<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>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="MyCustomHelpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

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

দ্রষ্টব্য যে রেজারকে এমভিসি 3 বিটাতে কাজ করার জন্য ওয়েবকনফাইগের যা দরকার তাতে অন্যান্য পরিবর্তন রয়েছে যাতে আপনি ~\View\Web.configবিটা প্রকল্পের টেমপ্লেটগুলিতে যে ফাইল পাঠায় সেদিকে একবার নজর দেওয়া ভাল ।


2
এফডাব্লুআইডাব্লু, আমি খুঁজে পেয়েছি যে pageBaseType="System.Web.Mvc.WebViewPage"বৈশিষ্ট্যটিও প্রয়োজনীয়। আমি আপনার উত্তর আপডেট করেছি।
পোর্টম্যান

1
আপনি কি এমভিসি 3 আরসির জন্য এটি একইভাবে করবেন?
ক্লার্ক

1
+1 আপনাকে ধন্যবাদ। আমি আজ এই সমস্যার উত্তর খোঁজার চেষ্টা করে অনেক বেশি সময় ব্যয় করেছি।
jessegavin

32
আপনি সম্ভবত .cshtml ফাইলটি বন্ধ করে আবার খুলতে হবে যদি এটি কাজ না করে বা ত্রুটি দেয় না
সাইমন_উইভার

1
@ সিমন হ্যাঁ, আপনাকে ফাইলটি পুনরায় খোলা দরকার update সম্পাদক এখনই ওয়েবকনফিগ পরিবর্তনের জন্য দেখছেন না।
মার্চাইন্ড

50

আপনি যদি নিজের নাম স্পেসের ঘোষণাটি Web.configমূল "ভিউজ" ফোল্ডারে এবং / অথবা বর্তমান অঞ্চলের "ভিউস" ফোল্ডারে (আপনার দৃশ্যটি কোথায় রয়েছে তার উপর নির্ভর করে) রাখে - এটি প্রত্যাশা অনুযায়ী কাজ করা উচিত।


6

আমি এই http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx খুঁজে পেয়েছি যা কীভাবে আপনার সমস্ত রেজার পৃষ্ঠাগুলিতে একটি কাস্টম নেমস্পেস যুক্ত করতে পারে তা ব্যাখ্যা করে।

মূলত আপনি এটি করতে পারেন

using Microsoft.WebPages.Compilation;
public class PreApplicationStart
{
   public static void InitializeApplication()
   {
       CodeGeneratorSettings.AddGlobalImport("Custom.Namespace");
   }
}

এবং আপনার এসেম্বলিআইএনফোসগুলিতে নিম্নলিখিত কোডটি রাখুন

[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]

মেথড ইনিশিয়াল অ্যাপ্লিকেশনটি গ্লোবাল.এক্সে অ্যাপ্লিকেশন_স্টার্টের আগে কার্যকর করা হবে


পদ্ধতিটি System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport ("Fully.Qualified.Namespace") এ সরানো হয়েছে;
অগ্রণী

4

এটির জন্য মূল্যবান, অন্য কৌশলটি হ'ল আপনার সহায়ক সাহায্যকারী এক্সটেনশন ক্লাসটিকে একটি সিস্টেমের নেমস্পেসে স্থাপন করা যা ডিফল্টরূপে ভিউ ইঞ্জিন দ্বারা অন্তর্ভুক্ত। উদাহরণ স্বরূপ:

namespace System.Web.Mvc
{
    public static class HtmlHelper_MyExtensions
    {
        ...
    }
}

এভাবে, যতক্ষণ ক্লাস যুক্ত লাইব্রেরিটি রেফারেন্স করা হয় ততক্ষণ সবকিছু এটি দেখতে পাবে। যেহেতু আপনি একটি System.Web.Mvcশ্রেণি প্রসারিত করছেন তাই এটি একই নামস্থানে এক্সটেনশন পদ্ধতিগুলি রাখা যুক্তিসঙ্গতভাবে গ্রহণযোগ্য বলে মনে হয়।


0

ওয়েবের কনফিগের সাথে দেখার পরিবর্তে পরিবর্তনগুলি হয়েছে কিনা তা নিশ্চিত করার পরে ভিউটি বন্ধ এবং পুনরায় খোলার চেষ্টা করুন।

বন্ধ এবং পুনরায় খোলার ফলে আমার সমস্যা স্থির হয়েছে।

এখানে দেখো:

রেজার ভিউতে এএসপি.নেট এমভিসি 4 নামস্থান সমস্যা issue

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.