में डिज़ाइनर-फ्रेंडली विचार Ip.Net MVC का आनंद ले रहे हैं और मैं इसे आगामी प्रोजेक्ट में उपयोग करने के लिए देख रहा हूं। हालांकि, प्रोजेक्ट का हिस्सा डिजाइनिंग के लिए परियोजना दृश्यों को उनके जैसे चीजों के लिए खुलासा करने में सक्षम होने पर जोर दिया जाता है। एक समस्या जो मैं अनुमान लगा रहा हूं वह यह है कि Asp.Net एमवीसी विचार डेवलपर-केंद्रित हैं। मैं वास्तव में <% बनाम की intracies पर डिजाइनरों को शिक्षित करने के <% = <% foreach की तरह अकेले कुछ जाने के लिए नहीं चाहता ...Asp.Net MVC
उदाहरण के लिए, एक ठेठ MVC मेनू संरचना है।
<div id="menu">
<ul>
<li><%= Html.ActionLink("Home", "Index", "Main")%></li>
<li><%= Html.ActionLink("About", "About", "Main")%></li>
<li><% Html.RenderPartial("LogOnUserControl"); %></li>
</ul>
</div>
मैं बहुत बल्कि UserControls की एक बेड़ा की तरह संदेह से की तरह
<div id="menu">
<ul>
<li>{ActionLink "Home", "Index", "Main"}</li>
<li>{ActionLink "About", "About", "Main"}</li>
<li>{Partial "LogOnUserControl"}</li>
</ul>
</div>
या
<div id="menu">
<ul>
<li><my:ActionLink text="Home" action="Index" controller="Main" /></li>
<li><my:ActionLink text="About" action="About" controller="Main" /></li>
<li><my:Partial name="LogOnUserControl" /></li>
</ul>
</div>
हाँ कुछ के साथ जाने के लिए, कि पिछले दिखता डिजाइनरों बताने के लिए सक्षम होगा। व्यक्तिगत रूप से, मैं वास्तव में ऐसा करने के लिए UserControls का उपयोग करने का प्रशंसक नहीं हूं, अगर केवल उन नियंत्रणों का प्रतिपादन बहुत कुछ और (जैसा कि मैं इसे समझता हूं) के बाद होता है और मैं कुछ ऐसा पसंद करूंगा जो एमवीसी जीवन चक्र के अनुरूप हो । मुझे वास्तव में प्लेसहोल्डर्स का एक सेट और प्रासंगिक प्रतिपादन के साथ बदलने का एक तरीका है।
तो ऐसा करने के लिए सबसे अच्छी जगह कहां है और मैं किस तरह के व्यापार-बंद देख रहा हूं। मैं इस पर आने के लिए कुछ कोणों की कल्पना कर सकता हूं:
- एक कस्टम व्यूपेज क्लास जहां मैं कुछ प्रासंगिक ओवरराइड कर सकता हूं। ViewPage.RenderView या ViewPage.Framework आरंभ करें, हो सकता है, लेकिन वहां से टेक्स्ट पर आपको कैसे मिलता है, मुझे नहीं पता।
- कस्टम टेक्स्टवाइटर बनाएं और ViewPage.CreateHtmlTextWriter को ओवरराइड करें जिससे मैं सामान को बदलने के लिए टेक्स्ट आउटपुट को रोक सकता हूं। चक्र में यह बहुत देर हो चुकी है, हालांकि, अगर मैं सावधान नहीं हूं तो अन्य कस्टम फ़िल्टरिंग के साथ गड़बड़ कर दूंगा।
- अपना खुद का IView और ViewEngine कक्षाएं बनाएं। यह सोचने से पहले कि मैं बहुत बुरी जगह पर जा रहा था, मैं इस मार्ग से बहुत दूर नहीं आया था।
- कस्टम उपयोगकर्ता नियंत्रण जो आवश्यक कार्यक्षमता की नकल कर सकते हैं।
राय? अन्य विकल्प? क्या मेरा अपना व्यूइंजिन मेरा सबसे अच्छा विकल्प है? मेरा अपना व्यूपेज? या UserControl ऑब्जेक्ट्स पर्याप्त होने जा रहे हैं (कृपया कोई नहीं कहें)?
आपके फ्रंट एंड डिज़ाइनरों को डिफ़ॉल्ट वाक्यविन्यास के साथ ठीक होना चाहिए। मैं इसमें बहुत अधिक प्रयास नहीं करता। किसी भी तरह से, एमवीसी वैसे भी उनकी जरूरतों के लिए एक बड़ा सुधार है। ;) –
मैं सिर्फ आपके डिजाइनरों के लिए कुछ भी नहीं बनाऊंगा। उन्हें वाक्यविन्यास पर प्रशिक्षित करें और आगे बढ़ें। अन्यथा आप ViewEngine के अपने स्वाद को बनाए रखेंगे। जब नए संस्करण आते हैं, तो ब्रेकिंग परिवर्तन हो सकते हैं ... –
मैं जितना संभव हो डिजाइनरों के लिए थोड़ा घर्षण चाहता हूं। "उनके द्वारा उपयोग किए जाने वाले कार्यों से बेहतर" पर्याप्त नहीं है। मैं तोड़ने वाले बदलावों से निपटने में ठीक हूं। यदि यह सही हो जाता है (यानी कुछ आसानी से संशोधित में केंद्रीकृत) डिजाइनर पुन: प्रशिक्षण के लिए थोड़ा अपग्रेड दर्द बेहतर होता है। स्पार्क के लिए –