2010-11-01 15 views
6

मैं एमवीसी में प्रवेश करने की कोशिश कर रहा हूं और वर्तमान में वर्क्स पेशेवर एएसपी.नेट एमवीसी पुस्तक पढ़ रहा हूं।क्या कोई मुझे एएसपी.नेट एमवीसी समझा सकता है?

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

मैं यह भी समझता हूं कि अगर मेरे पास/product.aspx? Id = 100 जैसे यूआरएल है तो नियंत्रक को उत्पाद विवरण मिलेगा और उन्हें "शो उत्पाद" दृश्य के साथ विलय कर दिया जाएगा।

अब यहाँ बिट मैं नहीं मिलता है ...

मेरे उत्पाद पृष्ठ के एक लॉगिन बॉक्स, एक "शीर्ष 10 उत्पाद" अनुभाग में, श्रेणियों की सूची आदि की तरह उस पर अन्य सामग्री, है जो हो सकता है या अन्य पृष्ठों पर भी इस्तेमाल नहीं किया जाएगा तो मैं उन्हें कैसे शामिल करूं और अपना कोड अलग रखूं?

क्लासिक एएसपीएक्स मॉडल में यह आसान होगा। यदि मेरे शीर्ष 10 उत्पाद प्रत्येक पृष्ठ पर दिखाई देते हैं तो मैं इसे एक मास्टर पेज में रखूंगा, लेकिन अधिक संभावना है कि मैं इसे उपयोगकर्ता नियंत्रण में डाल दूंगा यदि यह कुछ पृष्ठों पर इस्तेमाल नहीं किया जा रहा था।

अब तक मैं एमवीसी के बारे में क्या समझता हूं, मेरे उत्पादों के नियंत्रक को शीर्ष 10 उत्पादों को प्राप्त करना होगा और ऐसे में कोई अन्य नियंत्रक जो शीर्ष 10 उत्पादों के साथ एक पृष्ठ तैयार कर रहा था।

उलझन में। कृपया मदद करे।

+1

"अगर मेरे पास यूआरएल/product.aspx है? Id = 100" - आप नहीं करते हैं। :) – bzlm

+1

पढ़ने को रोकें और कोडिंग शुरू करें, फिर आप समझते हैं ... :) – Aristos

+0

bzlm, अच्छा बिंदु। उत्पाद/100 – jonhobbs

उत्तर

4

क्या मैं MVC की अब तक समझ में से, अपने उत्पादों नियंत्रक करना होगा शीर्ष 10 उत्पाद मिलता है और इसलिए किसी भी अन्य नियंत्रक कि था शीर्ष 10 उत्पादों उस पर के साथ एक पृष्ठ का निर्माण होगा।

नहीं

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

पार्टियल का उपयोग करने पर यह एक अच्छा लेख है। http://jeffreypalermo.com/blog/asp-net-mvc-and-the-templated-partial-view-death-to-ascx/

इसके अलावा, अपने शीर्ष 10 उत्पादों के उदाहरण में, आपको लगता है कि एक बच्चे को कार्रवाई द्वारा प्रदान की गई हो सकता है:

[ChildActionOnly] 
public ActionResult GetTopTenProducts() 
{ 
    var products = db.GetTopProducts(10); 
    return View(products); 
} 

फिर आप एक आंशिक दृश्य (.ascx) कहा जाता है "GetTopProducts.ascx" होगा जब आप GetTopTenProducts() कार्रवाई को कॉल करते हैं तो प्रस्तुत किया जाएगा।

<% Html.RenderAction("GetTopTenProducts") %> 
+0

उत्कृष्ट उदाहरण। धन्यवाद। – jonhobbs

+0

मेरे पास एक ही सवाल था जब मैंने एमवीसी सीखना शुरू किया :) – dotariel

+0

+1 - कोई बकवास वितरण नहीं :) –

2

आप निकट पहुंच गए हैं: तो फिर अपने मास्टर पेज में या कहीं आपको लगता है कि शीर्ष 10 सूची दिखाने के लिए, आप इसे इस तरह से कहेंगे चाहता था।

आप बस भूल रहे हैं कि आपका नियंत्रक एक वर्ग है जो बेस क्लास से प्राप्त कर सकता है।

आप बेस कंट्रोलर क्लास बना सकते हैं जो शीर्ष दस उत्पादों को पुनर्प्राप्त करने में संभालता है, और उसके बाद कोई भी नियंत्रक है जिसकी कार्यक्षमता बेस क्लास से प्राप्त होती है।

फिर आप एक मास्टर पेज बनाते हैं जो व्यू (बेस नियंत्रक से) को पारित शीर्ष दस उत्पादों को प्रस्तुत करने के लिए आंशिक दृश्य का उपयोग करता है।

... और वॉयला! कोई कोड पुनरावृत्ति नहीं।

1

कृपया यह न भूलें कि एएसपी.नेट एमवीसी में आप अभी भी मास्टरपेज का उपयोग कर सकते हैं। एएसपी.नेट एमवीसी 2 के विशिष्ट के साथ आप उन 10 उत्पादों को रेंडरएक्शन का उपयोग करके प्रदर्शित कर सकते हैं जो आपके द्वारा चुने गए किसी भी नियंत्रक से एक्शन प्रस्तुत कर सकते हैं।

इसके अतिरिक्त, आपको पार्टियल व्यू भी पता होना चाहिए।

+0

धन्यवाद, ऐसा लगता है कि रेंडरराक्शन और पार्टियल व्यू जो मैं ढूंढ रहा था। मुझे और पढ़ना होगा। – jonhobbs

1

आप मास्टर पेज का उपयोग कर सकते हैं और एमवीसी आंशिक विचारों में उपयोगकर्ता नियंत्रण के पर्याय हैं। मास्टर पेज होने का अंतर संबंधित नियंत्रक नहीं है। आप दो तरीकों से एक हलचल।

  1. जब आप एक आंशिक दृश्य का उपयोग आप में एक मॉडल पारित कर सकते हैं।

    <%= Html.RenderPartial("PartialView",Model) %> 
    
  2. तुम बस कोड कोष्ठक <% %> उपयोग आंशिक दृश्य में काम कर सकते हैं।
संबंधित मुद्दे