2010-02-18 5 views
13

मैंने अन्य मेनू नियंत्रक के आधार पर शीर्ष मेनू लिंक ड्राइव करने के लिए मेनू-नियंत्रक स्थापित किया है। प्रत्येक दूसरे नियंत्रक के प्रत्येक विचार के लिए एक अलग नेस्टेड मास्टर पेज होता है।asp.net mvc क्या मेरे पास लक्षित करने के लिए कई क्रिया विधियों के लिए एक दृश्य हो सकता है? या क्या मुझे प्रत्येक के लिए एक अलग दृश्य की आवश्यकता है?

इसलिए, मेरे पास कई विधियों के साथ मेनू-नियंत्रक है जो दृश्यमानों को वापस करता है, प्रत्येक नियंत्रक प्रति एक या साइट के "खंड" को वापस करता है। तो वर्तमान में मेनू में प्रस्तुत करने के लिए इन तरीकों में से प्रत्येक का अपना विचार है। लेकिन मेनू को प्रस्तुत करने के लिए प्रत्येक दृश्य एक ही कोड है, केवल एक चीज जो परिवर्तन करती है वह नियंत्रक विधियों में तर्क है जो प्रस्तुत करने के लिए लिंक पर आधारित है।

क्या इन सभी नियंत्रक कार्यों को एक ही दृश्य को लक्षित करने का कोई तरीका है? चूंकि दृश्य सभी के लिए समान है?

धन्यवाद

उत्तर

21

हाँ, यह एक आम प्रथा है।

return View("Menu"); 
3

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

var thisMenu = CreateMenuForThisRequest(); 
return View ("Menu", thisMenu); 
2

यह एएसपी MVC आप उपयोग कर रहे का कौन सा संस्करण पर निर्भर करता है; MVC 2 के साथ, आप एक ascx नियंत्रण बनाते हैं और अपने ध्यान में रखते हुए RenderAction

का उपयोग आप ActionResult

 

public class NavigationController : Controller 
{ 
     [ChildActionOnly] 
     public ActionResult Menu() 
     { 
     Menu model;//your menu 
     return PartialView("YourMenuAscxControlName", model); 
     } 
} 
 

मैं एक मेनू के साथ की तरह

 
Html.RenderAction("Menu", "Navigation"); 

कुछ डाल दिया और एक नेविगेशन नियंत्रक होगा कर सकते हैं सोचें कि क्या आप एमवीसी 1 का उपयोग कर रहे हैं, एमवीसी फ्यूचर प्रोजेक्ट में रेंडरएक्शन है लेकिन मुझे यकीन नहीं है।

+0

MVC भविष्य के साथ अपनी साइट लोडिंग समय में वृद्धि होगी MVC 1 के लिए है का उपयोग RenderAction – freddoo

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