2008-11-03 12 views
10

का उपयोग कर एक ही पृष्ठ पर एकाधिक विजेट्स को प्रदर्शित करने के लिए कैसे करें मैं एमवीसी कैसे काम करता है और मुझे बुनियादी उदाहरणों के अलावा कुछ भी नहीं मिला है।एमवीसी

मैं एक प्रकार का विजेट-आधारित डिज़ाइन बनाना चाहता हूं; आप अपने पेज पर जाने के लिए विभिन्न विजेट चुन सकते हैं। प्रत्येक विजेट स्वयं के लिए ज़िम्मेदार होना चाहिए - इसमें नियंत्रक और दृश्य होना चाहिए। लेकिन मुख्य पृष्ठ के बारे में क्या? अचानक मुझे एक पृष्ठ मिला है जिसमें बहुत सारे नियंत्रक हैं!

स्पष्ट बात यह है कि नियंत्रकों को किसी भी तरह दृश्य में एम्बेड करना है ... This is my widget {SomeWidget} लेकिन मैंने पढ़ा है कि "एमवीसी प्रतिमान तोड़ता है"।

कुछ विजेट्स को विभिन्न यूआरएल (जैसे एक खोज बॉक्स परिणाम पृष्ठ पर जाता है) पर पोस्ट करने की आवश्यकता होगी और कुछ को उसी यूआरएल पर पोस्ट करना होगा (जैसे किसी लेख में टिप्पणी जोड़ने से आपको लेख में वापस लाया जाता है) । उदाहरण के लिए यदि वे सही पर एक खोज बॉक्स चाहते वे <div style="float: right;">{SearchController}</div> टाइप कर सकते हैं (मेरे प्रतिमान तोड़ने दुनिया में)

उत्तर

2

-

बातें ऊपर करने के लिए, उपयोगकर्ता विजेट आसपास HTML को संपादित करने में सक्षम होना चाहिए मैं वेब प्रोग्रामिंग में बहुत अच्छा नहीं हूं, लेकिन मेरा मानना ​​है कि, उदाहरण के उदाहरण से, कि पूरे पृष्ठ के लिए एक मॉडल, एक दृश्य और एक नियंत्रक होना चाहिए। अब दृश्य में पृष्ठ में प्रत्येक विजेट के लिए विचार होना चाहिए (और यह पृष्ठ नियंत्रक के लिए भी जाता है) जिसमें यह प्राप्त संदेशों को प्रेषित करता है।

संकल्पनात्मक रूप से एमवीसी का निम्न स्तर (विजेट्स के लिए) और उच्च स्तर का एमवीसी (पृष्ठ के लिए) है। और एमवीसी प्रतिमान तोड़ा नहीं जाएगा। अब आप विजेट के चारों ओर एचटीएमएल संपादित कर सकते हैं, यह पेज मॉडल (और कोई विजेट मॉडल नहीं) बदलता है।

आशा है कि इससे मदद मिलती है!

+0

टेम्पलेट में कोड जोड़ने के लिए और कक्षा प्लग और प्ले विजेट के लिए नहीं है। – rick

+0

मुझे डर है कि मैं आपकी टिप्पणी नहीं समझता ... क्या आप फिर से बदल सकते हैं? –

2

@ बेनोइट की टिप्पणी करने के लिए जोड़ने के लिए:

सिम्फोनी ढांचा घटकों के साथ इस संभालती है। प्रत्येक घटक एक स्वयं निहित एमवीसी उदाहरण है जिसे किसी अन्य दृश्य में एम्बेड किया जा सकता है। इसे सामान्य एमवीसी इंस्टेंस (मॉड्यूल/एक्शन जोड़ी) जैसे वेब अनुरोधों को सीधे प्रतिक्रिया देने के लिए तत्काल नहीं किया जा सकता है। इसे केवल एक और एमवीसी दृश्य में एम्बेड किया जा सकता है।

एक साइड नोट के रूप में: सिम्फनी प्लगइन को अपने स्वयं के पूर्ण एमवीसी इंस्टेंस के रूप में भी मानता है, जो अपने स्वयं के स्कीमा, मॉडल, नियंत्रक, कॉन्फ़िगरेशन फाइल, विचार, आदि के साथ पूरा करता है।

आपके मामले में, प्रत्येक घटक अपना स्वयं का एमवीसी उदाहरण होगा और ऐप इन घटकों को एकसाथ सिलाई करेगा। प्रत्येक घटक जिम्मेदार होगा कि यह फ़ॉर्म सबमिट करने का जवाब कैसे देता है।

एमवीसी का मतलब यह नहीं है कि एक दृश्य और एक नियंत्रक है। इसका मतलब है कि ऐप लॉजिक मॉडलों में संग्रहीत है, नियंत्रक एक साथ चीजों को चिपकाता है, और दृश्य प्रदर्शन बनाता है। यह तर्क और प्रस्तुति का एक औपचारिक और तार्किक अलगाव है।

0

एमवीसी थीम पर बहुत सी भिन्नताएं हैं और आपके विशेष सिस्टम के डिज़ाइन के रूप में निष्कर्ष पर आने से पहले विचार करने के लिए बहुत कुछ है। सबसे नवीनतम, लोकप्रिय वेब आधारित सिस्टम IoC को मार्गदर्शक प्रिंसिपल के रूप में देखते हैं। आम तौर पर, किसी प्रकार का ढांचा घटक नियंत्रक होता है जो उचित टेम्पलेट को दृश्य के रूप में आमंत्रित करने के लिए किसी प्रकार की कॉन्फ़िगरेशन का उपयोग करता है और मॉडल के रूप में उचित ऑब्जेक्ट पदानुक्रम के साथ इसे जोड़ता है। इनमें से अधिकतर प्रणालियों में टेम्पलेट्स द्वारा उपयोग किए जाने वाले एक्स्टेंसिबल जीयूआई विजेट लाइब्रेरी शामिल हैं। आप अपने स्वयं के विजेट जोड़ सकते हैं लेकिन यह आपके विजेट को एक विशिष्ट ऑब्जेक्ट पदानुक्रम में हार्ड कोड करने का सबसे अच्छा अभ्यास नहीं है। आईओसी लिंक भी घटकों और सेवाओं के बारे में बात करता है जो आपको उस हार्ड कोडिंग से बचने के तरीके पर कुछ दिशा देनी चाहिए।

1

सबसे अच्छा, लघु, और सरल किताबें मैं MVC पर पाया है में से एक यह एक PDC 2008 एक्सपो में पिछले सप्ताह सौंप दिया है:

http://www.apress.com/book/view/1430216468

इतना ही नहीं यह MVC की अवधारणा को कवर करता है, लेकिन रेल और एमवीपी पद्धति पर रूबी जैसे अन्य अवधारणाओं की इसकी तुलना। अपने वास्तविक परतों या अपने व्यवसाय वस्तुओं की आईओसी संरचना में नीचे लेकिन और -

इसके अलावा, यह पूरी कारण MVC यह चिंताओं की जुदाई है, और यही कारण है कि यह होना चाहिए न केवल यूआई स्तर पर होना वर्णन करके मौजूद है में चला जाता है दाल।

मैं इस पुस्तक की अत्यधिक अनुशंसा करता हूं क्योंकि वह केवल 110 पृष्ठों में सर्वोत्तम प्रथाओं को कवर करता है।

और नहीं, मैं फर्स्टप्रेस के लिए काम नहीं करता हूं या उनसे संबंधित नहीं हूं। मुझे बस किताब पसंद आया, और आखिरकार मैं किसी से सहमत हूं।

+0

यह पुस्तक एक विशिष्ट एमवीसी फ्रेमवर्क (एएसपी.नेट एमवीसी) के बारे में अधिक है। हालांकि, मैं कम से कम सहमत हूं कि एमवीसी अन्य उपयोगकर्ता इंटरफ़ेस पैटर्न के साथ तुलना करता है कि इसका एक अच्छा अनुभाग है। –

+0

वह लिंक रॉट किया गया है, और आपने पुस्तक का शीर्षक कभी नहीं बताया है। आप किस बात का जिक्र कर रहे थे? –

0

एएसपी.नेट एमवीसी विजेट डैशबोर्ड मैशप प्रकार पृष्ठ के लिए उपयुक्त है।

पीडीसी 2008

से this सत्र पर एक नज़र डालें आप शायद प्रत्येक विजेट के डेटा के द्वीपों अद्यतन करने के लिए अजाक्स सहायकों का उपयोग करना चाहते होंगे। यहां एक स्निपेट है कि आप किसी भी पेज पर कैलकुलेटर कैसे लगा सकते हैं लेकिन कोड को स्वतंत्र रखें।

देखें स्निपेट:

<script type="text/javascript"> 
    function OnFailure(error) { 
     alert("We have encounterd an error " + error); 
    } 
</script> 
<% using (Ajax.BeginForm("Add", new AjaxOptions{UpdateTargetId="sum", OnFailure="OnFailure"})){ %> 
    <%= Html.TextBox("x") %>&nbsp;+&nbsp; 
    <%= Html.TextBox("y") %>&nbsp;=&nbsp; 
    <span id="sum">?</span> 
    <input type="submit" value="AddEm" /> 
<% } %> 

नियंत्रक स्निपेट:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Add(string x, string y) 
{ 
    int sum = int.Parse(x) + int.Parse(y);  
    return Content(sum.ToString()); 
} 
+0

यह उत्तर क्यों दिया गया था? अगर कोई त्रुटि है तो मुझे बताएं और मैं सही कर दूंगा। –

1

सबसे अच्छा जानकारी मैं ASP.NET MVC में विजेट्स कर रही पर मिल गया है स्टीव सैंडरसन के ब्लॉग पर है। वह आंशिक अनुरोधों की अपनी अवधारणा को बताता है जो उप-नियंत्रकों की तुलना में एक अलग तकनीक है।

http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

आंशिक अनुरोध आसान है आप आंशिक दृश्य के बारे में सुना है, तो कैसे के बारे में आंशिक अनुरोध? किसी भी एमवीसी अनुरोध के भीतर, आप आंतरिक आंशिक अनुरोधों का संग्रह सेट कर सकते हैं, प्रत्येक जो अपने आंतरिक आंशिक अनुरोधों को स्थापित कर सकता है और इसी तरह। प्रत्येक आंशिक अनुरोध अपने सादे नियमित नियंत्रकों में से किसी में एक सादे पुराने कार्रवाई विधि प्रस्तुत हुई है, और प्रत्येक एक स्वतंत्र विजेट उत्पादन कर सकते हैं। मैं उन्हें "नियंत्रक" की तुलना में आंशिक "अनुरोध" कह रहा हूं क्योंकि वे उचित एमवीसी अनुरोध-हैंडलिंग पाइपलाइन चलाते हैं जो आपके रूटिंग सिस्टम और आपके नियंत्रक फैक्ट्री के साथ संगत है। फिर भी, उप-नियंत्रकों के साथ, सभी नियंत्रण नियंत्रकों में रहता है, और दृश्य अज्ञान हो सकता है।

0

मुझे लगता है कि जारेट्टीवी और जेसीबी के जवाब निकटतम हैं।

मुझे उप-नियंत्रक को पदानुक्रमित एमसीवी (एचएमवीसी) के रूप में पता चला है। विचार यह है कि आप नियंत्रक से टेम्पलेट में डेटा को "धक्का" के बजाय मूल दृश्य टेम्पलेट से "खींचें" सामग्री (एक उप-नियंत्रक द्वारा पॉप्युलेट) देखें। तो नियंत्रक को संपादित करने और विजेट जोड़ने के लिए देखने की आवश्यकता के बजाय, आप विजेट को दृश्य से कॉल करें। Php ढांचे कोडइग्निटर (मॉड्यूलर एक्सटेंशन) और कोहाना (डिस्पैच, और घटक) में इसे पूरा करने के लिए पुस्तकालय हैं।