2010-04-02 6 views
5

मैंने अभी अपना पहला एएसपी.नेट एमवीसी (2) सीएमएस समाप्त कर लिया है। अगला कदम वेबसाइट बनाना है जो सीएमएस के डेटाबेस से डेटा दिखाएगा। - प्रदर्शित करता है लेख श्रेणियोंasp.net mvc2 - मास्टर पेज और कोड संगठन के लिए नियंत्रक

http://img56.imageshack.us/img56/4676/portal.gif http://img56.imageshack.us/img56/4676/portal.gif


# 1 (लाल बॉक्स): यह वेबसाइट डिजाइन है। ViewModel:

public class CategoriesDisplay 
    { 
     public CategoriesDisplay() { } 

     public int CategoryID { set; get; } 
     public string CategoryTitle { set; get; } 
    } 

# 2 (ब्राउन बॉक्स) - प्रदर्शित करता है पिछले एक्स लेख; हरे रंग के बॉक्स # 3 से उन्हें छोड़ देता है। Viewmodel:

public class ArticleDisplay 
    { 
     public ArticleDisplay() { } 

     public int CategoryID { set; get; } 
     public string CategoryTitle { set; get; } 

     public int ArticleID { set; get; } 

     public string ArticleTitle { set; get; } 
     public string URLArticleTitle { set; get; } 
     public DateTime ArticleDate; 

     public string ArticleContent { set; get; } 

    } 

# 3 (हरे बॉक्स) - प्रदर्शित करता है पिछले एक्स लेख। आने वाली घटनाओं की सूची दर्शाता है - के रूप में भूरे रंग के बॉक्स # 2

# 4 (नीले बॉक्स) ही ViewModel उपयोग करता है। dataContext.Model.Event का उपयोग ViewModel

बॉक्स # 1, # 2 और # 4 साइट पर दोहराए जाएंगे और वे मास्टर पेज का हिस्सा हैं। तो, मेरा सवाल यह है कि: इस डेटा को मॉडल से कंट्रोलर में स्थानांतरित करने और अंत में पृष्ठों को देखने का सबसे अच्छा तरीका क्या है?

  1. मैं मास्टर पेज और ViewModel वर्ग के लिए एक नियंत्रक कि यह सब वर्गों को एक साथ लपेट या
  2. मैं इन बक्सों का हर के लिए आंशिक दृश्य बनाना चाहिए और उनमें से प्रत्येक कर देगा उचित वर्ग वारिस बना दें (अगर यह भी संभव है यह इस तरह से काम करता है कि?) या
  3. मैं सभी नियंत्रकों में यह बार-बार कोड रखना चाहिए और जो शायद wor होगा ViewData, के माध्यम से सभी अतिरिक्त आंकड़ा अंतरण से रास्ता :) या
  4. शायद एक बेहतर और अधिक सरल तरीका है लेकिन मुझे यह नहीं पता/देख रहा है?


अग्रिम धन्यवाद, इले



संपादित करें:
आपका जवाब # 1 है, तो कैसे मास्टर पेज के लिए एक नियंत्रक बनाने के लिए कृपया समझा!

संपादित करें 2:
इस ट्यूटोरियल में वर्णन किया गया है अमूर्त वर्ग का उपयोग कर मास्टर पृष्ठ पर डेटा भेजने का तरीका: में http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx
"लिस्टिंग 5 - नियंत्रकों \ MoviesController.cs", डेटा सीधे डेटाबेस से का उपयोग कर लिया गया है LINQ, भंडार से नहीं। तो, मुझे आश्चर्य है कि यह सिर्फ इस ट्यूटोरियल में है, या यहां कुछ चाल है और भंडार का उपयोग नहीं किया जा सकता/नहीं?

+0

क्या एमवीसी में दृढ़ता से टाइप किया गया मास्टर पेज बनाना संभव है? –

+0

मैं यह प्रश्न भी जानना चाहूंगा कि यह प्रश्न –

+0

मास्टर पेज पर डेटा पास करने का उत्तर यहां है: http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx –

उत्तर

4

मेरे गुरु पृष्ठ के लिए डेटा प्राप्त करने के लिए:

  • मैं मास्टर पृष्ठ के लिए डेटा प्राप्त करने के लिए एक अमूर्त वर्ग का उपयोग कर पसंद नहीं है। मैं विरासत पर संरचना पसंद करते हैं।
  • मैं व्यूडाटा शब्दकोश का उपयोग करना पसंद नहीं करता क्योंकि यह दृढ़ता से टाइप नहीं किया गया है।

मैं प्रत्येक अनुभाग के लिए दृश्य, दृश्य मॉडल और क्रियाएं तैयार करूंगा। फिर Html.RenderAction(...) पर कॉल करें उदाहरण के लिए:

मैं CategoriesDisplay.aspx केवल रेडबॉक्स के लिए HTML के साथ बनाउंगा। मैं आपके CategoriesDisplay मॉडल पास करूंगा। तब मेरे नियंत्रक में:

public class CategoryController : Controller 
{ 
    public ActionResult DisplayCategories() 
    { 
     var model = new CategoriesDisplay(); 
     ... 
     return View(model); 
    } 
} 
तब मेरे मास्टर पृष्ठ में

:

<% Html.RenderAction<CategoryController>(c => c.DisplayCategoreis()); %> 

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

+0

मुझे शायद जोड़ना चाहिए, एचटीएमएल। रेंडरएक्शन एक्सटेंशन जो मैंने उपयोग किया है उसका हिस्सा है Asp.Net एमवीसी वायदा असेंबली। http://aspnet.codeplex.com/releases/view/41742 – mxmissile

+0

मुझे लगता है ... यह नहीं पता था कि यह HTML क्या था। रेंडरएक्शन इसलिए मैं थोड़ा सा संदेह था। यह निश्चित रूप से सार वर्ग के साथ एक से अधिक दिलचस्प समाधान की तरह लगता है। मैं इसे एक या दो दिनों में कोशिश करूंगा और देख सकता हूं कि यह वास्तव में मेरे लिए काम करता है :) धन्यवाद maxmissile! –

+0

क्या एक नियंत्रक कार्रवाई करना और इसे अलग-अलग विचारों में करना संभव है? अधिक सटीक होने के लिए, क्या एचटीएमएल के अंदर परिभाषित करना संभव है। रेंडरएक्शन() कंट्रोलर, कौन सी एक्शन और किस व्यू का उपयोग करना है? –

2

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

मैं आपकी पसंद # 1 के साथ जाऊंगा और एक व्यूमोडेल बनाउंगा जो आपको आवश्यक सभी कक्षाओं को लपेटता है।

+0

मैं अपना प्रश्न संपादित करता हूं ... मैं यह नहीं भूलना चाहता कि मुझे नहीं पता कि मास्टर पेज के लिए नियंत्रक कैसे बनाना है (मैं एएसपीनेट नौसिखिया हूं) –