2010-12-08 18 views
5

मैंने एक ऐसा क्षेत्र बनाया है जो हमारे कुछ विकास उत्पादों को लॉग इन करता है, जैसे कि लॉग इन, एचटीएमएल हेल्पर्स इत्यादि। क्षेत्र के अंदर, मेरे पास है एक आंशिक दृश्य है कि मैं क्षेत्र के बाहर संदर्भ का प्रयास कर रहा हूं। मैंAsp.net एमवीसी - एक क्षेत्र से आंशिक दृश्य प्रस्तुत करें

public class Routes : AreaRegistration 
{ 
    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Common_default", 
      "Common/{controller}/{action}/{id}", 
      new { 
       controller = "Account", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 
    } 

    public override string AreaName 
    { 
     get { return "MvcCommons"; } 
    } 
} 

और अब नियमित रूप से इस परियोजना में, मैं MvcCommons क्षेत्र में एक दृश्य के संदर्भ के लिए कोशिश कर रहा हूँ के साथ क्षेत्र पंजीकृत कर लिया है ...

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<h2>TestGrid</h2> 

<% Html.RenderPartial("jQGridTable", ViewData.Model); %> 

लेकिन मैं विचार है कि प्राप्त करते रहने के नहीं मिला इससे पहले, एमवीसी कॉमन्स प्रोजेक्ट बनाने के दौरान, मुझे दृश्य त्रुटियां मिल रही थीं, लेकिन त्रुटियों ने मुझे बताया कि यह क्षेत्र फ़ोल्डर्स और डिफ़ॉल्ट दृश्य फ़ोल्डर्स दोनों में देखा गया था। इस बार, मुझे केवल डिफ़ॉल्ट फ़ोल्डर्स मिल रहे हैं। क्या इसे पूरा करने का कोई रास्ता है?

सभी को धन्यवाद!

उत्तर

5

मुझे वास्तव में ऐसा नहीं करना पड़ा है, लेकिन अनुमान में मुझे लगता है कि आपको Html.RenderAction() का उपयोग करना चाहिए, जैसे Html.RenderAction("action", "controller", new { area = "Area", model = ViewData.Model })

मॉडल को कार्रवाई के पैरामीटर के नाम से प्रतिस्थापित करना होगा, लेकिन इसे काम करना चाहिए।

संपादित करें इसके लिए प्रत्येक नियंत्रक के लिए नियंत्रक की आवश्यकता होगी और सेटअप देखेंगे।

0

डिफ़ॉल्ट व्यूइंजिन उसी क्षेत्र (या रूट) फ़ोल्डरों के दृश्यों को देखता है जहां उपयोगकर्ता नियंत्रण का संदर्भ दिया जाता है। यदि आप विचारों का उपयोग या स्टोर करने का एक कस्टम तरीका बनाना चाहते हैं, तो मैं आपको एक कस्टम व्यूइंजिन बनाने का सुझाव देता हूं। कृपया इस उदाहरण पर एक नज़र डालें: Implement Theme Folders using a Custom ViewEngine

0

याद रखने की एक महत्वपूर्ण बात यह है कि जब आप रेंडरपार्टियल का उपयोग करते हैं तो आप इसे वर्तमान क्रिया के संदर्भ में उपयोग करते हैं।

जैसा कि आपकी कार्रवाई किसी क्षेत्र में नहीं है, यह केवल नियंत्रक के लिए व्यू/फ़ोल्डर में दिखाई देगी, कार्रवाई तब साझा फ़ोल्डर से संबंधित होती है।

कोई भी विचार जो आप क्षेत्रों और नियंत्रकों के बीच साझा करना चाहते हैं और मार्ग पर उपलब्ध हैं, रूट व्यू/साझा फ़ोल्डर होना चाहिए। वास्तव में यदि दृश्य आंशिक के रूप में कॉल करने योग्य है, तो इसके लिए किसी क्षेत्र से संबंधित होने का शायद कोई कारण नहीं है।

आप क्षेत्र में कॉल कर सकते हैं जब आप आंशिक के बजाय क्रियाएं प्रस्तुत करना चाहते हैं - जो उस क्रिया के दौरान वर्तमान क्रिया के संदर्भ को बदलता है जिससे आप उस क्षेत्र के भीतर दृश्य वापस कर सकते हैं।

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