2012-07-03 11 views
6
बुला

मैं समझने के लिए कारण है कि जब मैं मेरे विचार में ऐसा करते हैं, मैं कोई त्रुटि मिलती हैउस्तरा @ {...} बनाम @ RenderPartial

@Html.RenderPartial("MyPartial", Model); 

संकलन त्रुटि विवरण कोशिश कर रहा हूँ: के दौरान त्रुटि हुई इस अनुरोध की सेवा के लिए आवश्यक संसाधन का संकलन। कृपया निम्नलिखित विशिष्ट त्रुटि विवरणों की समीक्षा करें और अपने स्रोत कोड को उचित रूप से संशोधित करें।

कंपाइलर त्रुटि संदेश: CS1502: के लिए सबसे अच्छा अतिभारित विधि मैच 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' में कुछ ऐसी अमान्य तर्क हैं

लेकिन जब मैं ऐसा करें, आंशिक renders

@{ 
    Html.RenderPartial("MyPartial", Model); 
} 

क्या किसी को पता है कि पहला उदाहरण क्यों विफल रहता है?

+6

इस उत्तर को जांचें ..: http://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderaction – Chandu

+0

एक लाइनर कॉल ज्यादातर आउटपुट डेटा के लिए है (जैसे @ डेटटाइम.अब) या शुद्ध सी # तर्क (जैसे @ model.ID! = 0? हाँ: नहीं)। ब्लॉक कोड एपीआई प्रोसेसिंग के लिए हैं, जैसे आंशिक दृश्य या अन्य सबसे परिष्कृत परिचालनों को कॉल करना। ध्यान दें कि त्रुटि पृष्ठ पर एक सहायक लिखने के बारे में बताती है। –

+0

डुप्लिकेट। यह अनिवार्य रूप से वही है जैसा कि @ कंधू से जुड़ा हुआ है। –

उत्तर

7

यह मूल रूप से तथ्य यह है कि इस प्रारूप ...

@Html.RenderPartial("MyPartial", Model) 

... कार्यों कि void नहीं लौटते के लिए प्रयोग किया जाता है है, के बाद से RenderPartial void वापसी करता है, आपको लगता है कि त्रुटि मिलती है।

@{  
Html.RenderPartial("MyPartial", Model); 
} 

आप alternativelly कॉल कर सकते हैं

@Html.Partial("MyPartial") 

... जो स्ट्रिंग लौटाने करता है:

इसके बजाय, इस ब्लॉक में, यह सिर्फ कोड निष्पादन (कि आंतरिक रूप से लिखने कॉल कर देगा) है ।

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