मैं रेजर व्यू पेज में नाम स्थान कैसे आयात करूं?


जवाबों:


852

अंत में जवाब मिला।

@using MyNamespace

VB.Net के लिए:

@Imports Mynamespace

यदि आप ऐप में नाम स्थान शामिल करना चाहते हैं तो @ravy amiry के उत्तर पर एक नज़र डालें ।


4
इसके अलावा: वे कोड ब्लॉक में नहीं जा सकते। (आप एक रनटाइम त्रुटि प्राप्त करेंगे)
Dan Esparza

5
इसके अलावा आपको अर्धविराम की आवश्यकता नहीं है।
RPM1984

5
यह सिर्फ बुरा अभ्यास काल है। कृपया इसे अपने रेजर पृष्ठों के शीर्ष पर न जोड़ें। यह गन्दा है आदि ... सही तरीका यह है कि वेब में जोड़ें - web.config @Javad_Amiry बताते हैं।
टॉम स्टिकेल

21
यह बुरा अभ्यास नहीं है। यह एक बिल्कुल आवश्यक विशेषता है। web.config एक वैश्विक उपयोग कथन की तरह है जो आपके सभी पृष्ठों में नाम स्थान को सक्रिय बनाता है। यदि आप अलग-अलग नामस्थानों में एक ही नाम के साथ कक्षाएं चाहते हैं तो वह नहीं हो सकता है। यदि आप उन्हें एक ही फ़ाइल में उपयोग करने का प्रयास करते हैं, तो भी आपके पास एक संघर्ष होगा, लेकिन आप एक ही फ़ाइल में आसानी से हल कर सकते हैं। यदि आप इसे web.config में चिपकाते हैं, तो आपके सभी पृष्ठों में संघर्ष उत्पन्न होगा जो कि दोनों वर्गों का उपयोग करते हैं। तो इस बुरे अभ्यास को बुलाने का कोई मतलब नहीं है।
२१:१५ पर ट्राइंको

4
मुझे आश्चर्य है कि Intellisense का उपयोग करने वाले कथन को उसी तरह जोड़ने के लिए संकेत नहीं करता है, जैसे वह सामान्य C # पृष्ठों में करता है।
२१:१५ पर ट्राइंको

397

पहला तरीका यह है कि फाइलों @usingमें स्टेटमेंट का उपयोग .cshtmlकरें, जो एक नेमस्पेस को केवल वर्तमान फाइल में आयात करता है, और दूसरा:

Viewsअपनी परियोजना की निर्देशिका में "web.config" फ़ाइल में (ध्यान दें कि यह परियोजना के मूल में मुख्य web.config नहीं है) , इस अनुभाग को खोजें:

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      .
      .
      <!-- etc -->
    </namespaces>
  </pages>
</system.web.webPages.razor>

आप अपने कस्टम नामस्थान को इस तरह जोड़ सकते हैं:

<add namespace="My.Custom" />

वह सभी .cshml (और / या .vbhtml) फ़ाइलों में नामस्थान जोड़ देगा; यहां तक ​​कि आप यहां से वंशानुक्रम भी बदल सकते हैं, जैसे:

<pages pageBaseType="My.Custom.MyWebViewPage">

सादर।


अद्यतन:Nick Silberstein क्षेत्रों के बारे में अपने अनुस्मारक के लिए @ धन्यवाद ! उसने कहा:

आप एक के भीतर काम कर रहे हैं क्षेत्र , आप जोड़ना आवश्यक है namespaceके भीतर Web.configके तहत /Areas/<AreaName>/Views/बजाय /Views/


10
@vtortola: कौन सा web.config? web.config फ़ाइल को व्यू फ़ोल्डर में, रूट फ़ोल्डर में मुख्य web.config नहीं। ठीक है?
रावी अमीर

9
मैं उम्मीद करता हूं कि किसी को अपने बाल खींचने के कुछ मिनट बचाने की उम्मीद है और कहें कि यदि आप एक क्षेत्र के भीतर काम कर रहे हैं, तो आपको Web.config के भीतर / क्षेत्र / <AreaName> दृश्य / के बजाय / के साथ नाम स्थान जोड़ना होगा दृश्य /।
निक सिल्बरस्टीन

11
@MatthijsWessels नहीं यह वी.एस. को पुनः आरंभ करने की आवश्यकता नहीं है। बस परियोजना का निर्माण करें और यह प्रभावी होगा। कम से कम मैं हमेशा ऐसा करता हूं। यदि कोई दृश्य खुला है, तो आपको निर्माण से पहले उस दृश्य को बंद करना होगा और निर्माण के बाद इसे फिर से खोलना होगा।
रावी अमीर

2
@Javad_Amiry, अहा, मैंने पुनर्निर्माण किया, लेकिन दृश्य को बंद नहीं किया।
मथिज्स वेसल्स

1
हां, यह सही तरीका है।
ओप सिलेक्टेड

30

लाइब्रेरी के लिए

@using MyNamespace

मॉडल के लिए

@model MyModel

1
क्यों नहीं है; अतं मै?
FrenkyB

2
@FrenkyB क्योंकि यह C # कोड नहीं है, यह रेजर कोड है। usingएक .cs फ़ाइल की शुरुआत में एक सी # संकलक कीवर्ड है। @usingएक .cshtml फ़ाइल की शुरुआत में उस्तरा टेम्पलेट इंजन के लिए एक संकेत है।
मार्क

27

ASP.NET MVC 3 पूर्वावलोकन 1 में आप Global.asax.cs में इस कोड के साथ अपने सभी रेजर दृश्यों पर एक नाम स्थान आयात कर सकते हैं।

Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");

मुझे उम्मीद है कि RTM यह Web.config सेक्शन के माध्यम से हो जाता है।


6
RTM में एक web.config सेक्शन होगा, लेकिन हम ऐसा करने के लिए एक एपीआई भी प्रदान करना चाहते थे क्योंकि कई उपयोगकर्ता विन्यास से दूर होने लगे हैं। तो हमारे पास आपके लिए दोनों विकल्प उपलब्ध हैं!
एंड्रयू स्टैंटन-नर्स

6
ASP.NET MVC 3 बीटा के रूप में यह विधि अब काम नहीं करती है। एक नया web.config अनुभाग है जैसा कि यहां बताया गया है stackoverflow.com/questions/3875207/… । AddGlobalImport पद्धति को सभी नामों पर एक वैश्विक नामस्थान आयात करने के लिए इस वर्ग में ले जाया गया है। System.Web.WebPages.Razor.WebPagesRazorHost
जर्मेन

16

मुझे यह 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")]

विधि InitializeApplication Global.asax में Application_Start से पहले निष्पादित की जाएगी


4
यह वास्तव में एक अच्छा जवाब है, लेकिन इसके स्थान Microsoft.WebPages.Compilation.AddGlobalImportको बदल दिया गया था System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport
जाहू

2
इस पद्धति का उपयोग करने का बड़ा फायदा इस तथ्य से मिलता है कि नाम स्थान केवल एक स्थान पर घोषित किए जाने के दौरान सभी क्षेत्रों (क्षेत्रों के भीतर सहित) में उपयोग करने योग्य होगा।
जाहू

14

एक मुद्दा यह है कि आपको पता होना चाहिए कि जब आप आयात एक नाम स्थान से होकर जाता है web.configमें Viewsफ़ोल्डर, कि namespaceआयात किया जाता है बस कि में विचारों के लिए फ़ोल्डर । यदि आप namespaceकिसी क्षेत्र के विचारों में आयात करना चाहते हैं , तो आपको namespaceउस क्षेत्र की web.configफ़ाइल में, क्षेत्र के Viewsफ़ोल्डर में स्थित आयात करना होगा ;


11

नेमस्पेस और लाइब्रेरी के लिए

@using NameSpace_Name

मॉडल के लिए

@model Application_Name.Models.Model_Name 

रेजर पेज पर सूची को सत्यापित करने के लिए (आपको सूची आइटम तक पहुंचने के लिए फ़ॉरच लूप का उपयोग करना होगा)

@model List<Application_Name.Models.Model_Name>

@foreach (var item in Model)
   {  
          <tr>
                <td>@item.srno</td>
                <td>@item.name</td>
         </tr>  
   }


3

MVC3 RTM में "MyNamespace का उपयोग" काम करता है। उम्मीद है की यह मदद करेगा।


2

मुझे लगता है कि रेजर दृश्य में आयात नाम स्थान, आपको बस नीचे जोड़ने की आवश्यकता है:

@using XX.YY.ZZ

0

अपनी आवश्यकता के आधार पर आप निम्न में से किसी एक विधि का उपयोग कर सकते हैं:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.