2011-01-30 10 views
5

मैं अपने दृश्य में संपादन टेम्पलेट प्रस्तुत करने के लिए EditorFor() सहायक का उपयोग कर रहा हूं और मैं प्रदर्शन टेम्पलेट को प्रस्तुत करने के लिए इस टेम्पलेट के अंदर DisplayFor() पर कॉल करना चाहता हूं।क्या संपादक के भीतर से DisplayFor() का उपयोग करना संभव है टेम्पलेट नियंत्रण

इस

इस तरह /Shared/EditorTemplates/Client.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BusinessNext.Models.Ef.Client>" %> 
<%: Html.DisplayFor(client=>client) %> 

मैं ग्राहक के गुण बाहर प्रस्तुत करना DisplayFor टेम्पलेट में अंदर है। डिस्प्ले के लिए टेम्पलेट पूरी तरह से ठीक काम करता है जब हर जगह से कहा जाता है लेकिन संपादक से टेम्पलेट के लिए यह कुछ भी प्रस्तुत नहीं करता है। ऐसा लगता है कि DisplayFor() कॉल वास्तव में DisplayFor टेम्पलेट पर कभी नहीं मिलता है।

उत्तर

3

मुझे डर है कि एक ही रास्ता उपयोग करने के लिए है हूँ एक आंशिक:

<%= Html.Partial("~/Views/Home/DisplayTemplates/Client.ascx", Model) %> 
+0

मैंने <% Html.RenderPartial (MVC.Shared.Views.DisplayTemplates.Client, मॉडल) के साथ प्रयास किया; %> क्योंकि मैं टी 4 एमवीसी का उपयोग करता हूं और इसे दृश्य उपयोगकर्ता नियंत्रण नहीं मिलता है। यह मानक त्रुटि देता है, निर्देशिकाओं को खोजता है और इसे नहीं ढूंढता है। अन्यथा, मेरे टी 4 एमवीसी ने अब तक हर समय काम किया है। – mare

+0

न तो यह वही त्रुटि <% = Html.Partial (MVC.Shared.Views.DisplayTemplates.Client)%> - क्या उन दो फ़ोल्डरों के बारे में कुछ खास है? – mare

+0

@ मारे, नहीं, कुछ खास नहीं होना चाहिए। यह देखने के लिए स्ट्रिंग पास करने का प्रयास करें कि इससे कोई फर्क पड़ता है या नहीं। त्रुटि संदेश में खोजी गई जगह आपको क्या बताती है? क्या वे कुछ संकेत देते हैं? –

1

यह बहस का मुद्दा हो सकता है अगर यह जटिल वस्तुओं टेम्पलेट एक अच्छा विचार है, या नेस्टेड टेम्पलेट्स के लिए मेरे दृष्टिकोण एक हैक है अगर या नहीं। इसका लाभ माता-पिता के लिए एक ही टेम्पलेट है और बच्चे दोनों आंशिक विचारों को चुनने/उपयोग करने के बजाय टेम्पलेट्स कर सकते हैं।

सभी तरफ, टेम्पलेट किए गए विचारों को घोंसलाित किया जा सकता है, यदि आप बीच के रूप में आंशिक दृश्य का उपयोग करते हैं।

बाहर टेम्पलेट नीचे की तरह कुछ होगा जहां भीतरी टेम्पलेट रखना चाहते हैं:

Html.RenderPartial("SharedDisplayGoBetweenForFoo", item); 

आंशिक इस प्रकार दिखाई देगा साझा:

@model Foo 

@Html.DisplayFor(a => a); 

भीतरी टेम्पलेट तो कहा जा सकता है और किसी अन्य की तरह दिखता है।

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