2014-06-26 13 views
18

में रेजर के साथ आंशिक विचार प्रस्तुत करना मैं एमवीसी 5 में रेजर का उपयोग करने के लिए आंशिक दृश्य प्राप्त करने की कोशिश कर रहा हूं। जब मैंएमवीसी 5

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

का उपयोग मैं पार्सर त्रुटि मिलती है: जब मैं {} हटाने

Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.

, अर्थात्:

@Html.RenderPartial("ViewName", model); 

मैं संकलन त्रुटि मिलती है

Cannot implicitly convert type 'void' to 'object'.

मैं क्या कर रहा हूँ गलत है?

उत्तर

27

आपको लगता है कि कोड के संदर्भ पोस्ट नहीं किया है, लेकिन यह त्रुटि केवल वास्तव में होता है जब आप सीधे किसी भी HTML कफन के बिना एक कोड ब्लॉक के भीतर @ उपयोग कर रहे हैं। उदाहरण के लिए:

@if (true) { 
    @{ Html.RenderPartial(...); } 
} 

आप, त्रुटि दिखा सकते हैं, जबकि चाहेंगे:

@if (true) { 
    <div> 
     @{ Html.RenderPartial(...); } 
    </div> 
} 

ठीक होगा। आप, साथ ही पूरी तरह से Html.RenderPartial के लिए कोड ब्लॉक को हटाने, @ शामिल करके इसे हल कर सकते हैं:

@if (true) { 
    Html.RenderPartial(...); 
} 
+1

अच्छी तरह से देखा गया, यह @foreach में लपेटा गया था {}! – Mourndark

+0

अच्छा जवाब, विवरण मेरी तुलना में कहीं बेहतर था :) –

3

क्या आप अपने रेंडरपार्टियल के आसपास कोड दिखा सकते हैं? मुझे लगता है कि आप एक लूप में हैं, अगर ब्लॉक, या किसी अन्य प्रकार के कोड ब्लॉक। यदि हां, तो आप सिर्फ कहेंगे

Html.RenderPartial("ViewName", model); 
7

यह गलत है:

@Html.RenderPartial("ViewName", model); 

यह सही है:

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

पार्सिंग त्रुटि आंशिक दृश्य की सामग्री की वजह से हो सकता है। उदाहरण के लिए, यदि आपके पास कोई ईमेल पता है, तो सुनिश्चित करें कि आप @@ से ठीक से बचने के लिए @@ का उपयोग करते हैं।

Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.

+0

यह भी हो सकता है क्योंकि कोड ब्लॉक (@ गायन के साथ समझौता) और अन्य कोड ब्लॉक (फोरैच इत्यादि) है यदि ऐसा है तो आपको कोड ब्लॉक –

+0

@ Believe2014 के सामने @ नहीं रखना चाहिए मेरे मामले में, इंडेक्स व्यू है, मैंने आंशिक दृश्य खोज फ़ॉर्म बनाया है जिसे मैं इंडेक्स व्यू में @ {एचटीएमएल द्वारा शामिल करना चाहता हूं।RenderPartial ("TestOne"); }, अगर मैं टेस्टऑन चलाता हूं तो यह स्वयं काम कर रहा है लेकिन अगर मैं इंडेक्स चलाता हूं तो त्रुटि होती है, शब्दकोश में पास किया गया मॉडल आइटम 'पेज्डलिस्ट। पेजेडलिस्ट' प्रकार का होता है ..... – SAR

17

तुम भी @Html.Partial("~/View/Home/myview.cshtml")

यह स्ट्रिंग रिटर्न जबकि Html.RenderPartial कॉल आंतरिक रूप से लिखें, और शून्य रिटर्न का उपयोग कर सकते हैं। किसी अन्य @{} खंड के अंदर @{ Html.RenderPartial("ViewName", model); } :

+0

IMHO यह प्रश्न का सही/सर्वोत्तम उत्तर है। – Form

0

अपने कोड की समीक्षा करें, तो आप क्योंकि आप इस कोड का उपयोग कर रहे हैं कि त्रुटि मिल रही है हो सकता है। कृपया, ब्राउजर में आपको जो त्रुटि संदेश मिलता है, उसे ध्यान से पढ़ें, आपको कोड पर स्विच करने के लिए @{} का उपयोग करने की आवश्यकता नहीं है क्योंकि आप पहले से ही अंदर हैं, इसलिए, बस @{ और } हटाएं और आपको इसे ठीक से काम करना चाहिए।

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