2013-11-10 6 views
5

मैं एमवीसी 4 का उपयोग कर रहा हूं और अपने विचारों को थोड़ा सा साफ करना चाहता था इसलिए कई आंशिक विचार बनाने और प्रतिपादन के दौरान उन्हें एक साथ लाने का फैसला किया।एमवीसी 4 नेस्टेड @ एचटीएमएल.रेंडरपार्टियल() फेंकने वाला कंपाइलर त्रुटि संदेश: CS1502

यह काम करता है जब दृश्य प्रस्तुत किया जाता है तो कुछ @Html.RenderPartial('path\to\my\partialView.cshtml') होता है लेकिन अगर यह partialView.cshtml बदले में विफल रहता है तो @Html.RenderPartial('path\to\my\otherPartialView.cshtml') इसके अंदर परिभाषित किया गया है।

मैं या तो RenderPartial या आंशिक विधि

error CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments 
error CS1503: Argument 1: cannot convert from 'void' to 'System.Web.WebPages.HelperResult' 

वहाँ MVC4 में एक तरह से हम मेरे बड़े दृश्य मार्कअप फ़ाइलों को साफ़ रखने के लिए प्राप्त कर सकते हैं है का उपयोग कर के साथ की तरह त्रुटियों मिल सकता है? यानी आंशिक विचारों को अन्य आंशिक विचारों के साथ रचनात्मक रूप से लिखने का प्रयास करें।

संपादित

बस और अधिक जानकारी देने के लिए।

फ़ाइल:: ManageLoads.Mobile.cshtml

स्थान: Views-> Shipper-> ManageLoads

इस दृश्य के अंदर

मैं इस तरह कोड है:

मेरे मोबाइल दृश्य इस तरह दिखता है

<div id="landingPage" ng-show="MenuSelection=='DefaultPage'"> 
      @Html.Partial("~/Views/Shipper/_DashboardPartial.cshtml") 
      <div class='message {{MessageClass}}'> 
     <i class='{{MessageIcon}}'></i> 
     <p>{{Message}}</p> 
      </div> 
     </div> 

यह हिस्सा बिना किसी समस्या के ठीक काम करता है। अब _DashboardPartial.cshtml के अंदर यदि मेरे पास किसी अन्य आंशिक दृश्य का संदर्भ है, तो यह विफल हो जाता है।

<div id="warehouseSelection" ng-show="getStep()==1"> 
    {@Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");} 
</div> 

इस टूट जाता है और त्रुटि फेंकता है, लेकिन अगर मैं वहाँ अंदर "_MyWarehouse.cshtml" की सामग्री को पेस्ट कॉपी, इसे फिर से काम करने के लिए शुरू होता है। मैंने सत्यापित किया है कि _MyWarehouse.cshtml का पथ सही है, इसलिए मुझे संदेह है कि इस मुद्दे को उत्पन्न करने वाले रेंडरपार्टियल विधि के घोंसले के साथ इसका कुछ संबंध है।

सादर किरण

उत्तर

16

पहला मुद्दा है कि मुझे लगता है कि अपने Html.RenderPartial वाक्य रचना गलत है। @ इसलिए की तरह घुंघराले ब्रेसिज़ के बाहर किया जाना चाहिए:

@{Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");} 

दूसरा, मुझे आश्चर्य है अगर Html.Partial और Html.RenderPartial के संयोजन यहाँ कुछ समस्या पैदा कर रहा है। यह देखने के लिए कि क्या यह आपके त्रुटि को ठीक करता है, ऊपर दिए गए वाक्यविन्यास के साथ Html.RenderPartial दोनों का उपयोग करने का प्रयास करें।

+1

आपने मेरा दिन बनाया! मैं क्या हो रहा था समझने के बिना पिछले कुछ दिनों से इस के साथ संघर्ष कर रहा था। समस्या {} के अंदर गलत स्थान पर @ @ के साथ थी। धन्यवाद – Kiran

2

आप की तरह, कई विकल्प हैं:

  • उपयोग custom html helpers (कम सामान्य html कोड के लिए);

  • रेंडरपार्टियल या रेंडरएक्शन का उपयोग करें क्योंकि यह here कहता है।

(इसके अलावा, आप की तरह जड़ें pathes उपयोग करने पर विचार करना चाहिए '~/दृश्य/someController/etc/करने के लिए/मेरी/partialView.cshtml' या यहाँ तक कि करने के लिए अपने कोड का स्थान बदलना कुछ साझा विचारों '~/दृश्य/साझा/.... 'लेकिन यह सब आप पर है)।

संपादित करें:

कृपया, this article पर एक नजर है। यह बताता है कि आपको निर्दिष्ट तरीकों का उपयोग कैसे करना चाहिए।यह बल्कि इस तरह से होना चाहिए:

@{ Html.RenderPartial("ViewName"); } 

लेकिन

@Html.Partial("ViewName") 
+0

मुझे नहीं लगता कि मैं पूरी तरह से आपकी टिप्पणी का पालन करता हूं। जब मैं इन कार्यों को आंशिक विचारों पर कॉल करता हूं जो बदले में अन्य आंशिक विचारों से बने होते हैं, तो मुझे त्रुटियां मिलती हैं। मैं काम करता हूं अगर मैं दूसरे आंशिक दृश्य में दूसरे स्तर के आंशिक दृश्य को कॉपी करता हूं। – Kiran

+0

मैंने बिना किसी समस्या के '@ HTML.Partial (...) 'का उपयोग किया है। आप रेंडरपार्टियल का उपयोग कर रहे किसी भी सटीक कारण? – Siim

+0

@ किरण ने अभी उत्तर में अधिक जानकारी जोड़ा है। – Agat

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