एमवीसी 3 में एक विशिष्ट कार्यक्षमता को पूरा करने के सुझावों पर सुझाव

मेरे पास वीएस 2010 से डिफ़ॉल्ट लेआउट के आधार पर एक एमवीसी 3 एप्लीकेशन है, जिसे मैंने नीचे दी गई छवि में दिखने के लिए बदल दिया है

Layout1

उपमेनू क्षेत्र को _layout.cshtml में परिभाषित किया गया है

    <div id="sidebar">
    

Entities

    
    @Html.Partial("_EntitiesMenu")
        
    </div>
    
@RenderBody()
 

और _EntitiesMenu में प्रविष्टियां नीचे दी गई हैं

  • @Html.ActionLink("Addresses", "Index", "Address")
  •       
    
  • @Html.ActionLink("Applications", "Index", "Application")
  •        
    

    मेरे पास एक एकल MapRoute परिभाषित किया गया है

    routes.MapRoute("Default",//Route name
        "{controller}/{action}/{id}",//URL with parameters
         { controller = "Home", action = "Index", id = UrlParameter.Optional });
    

    मेनू से शुरू होने वाले मेरे सभी इकाई नियंत्रकों को नियंत्रकों और दृश्यों में विचारों में मानक परिभाषित किया जाता है।

    मुझे एक लेआउट का उपयोग करने के लिए ऐप को बदलने की ज़रूरत है

    Layout2

    जब उपयोगकर्ता एंटिटी ऐप पर क्लिक करते हैं तो मैप/एंटीटीज/या मैप/एंटीटीज/इंडेक्स पर नेविगेट करना चाहिए और इसे मुख्य कार्य क्षेत्र में एक दृश्य खोलना चाहिए जो नीचे दिखेगा

    Layout3

    फिर जब उपयोगकर्ता सही सबमेनस पर क्लिक करते हैं, तो यूआरएल myapp/entities/entity1/index, myapp/entities/entity1/edit/1, आदि की तरह दिखना चाहिए (बिल्कुल ठीक है लेकिन "नीचे" संस्थाओं के पृष्ठ पर।
    मैंने एंटिटी कंट्रोलर को परिभाषित किया है

    public class EntitiesController : Controller
    {
        public ActionResult Index()
        { return View();}
    }
    

    और ऐसा लगता है जैसे दिखता है

    <div id="workarea">
       //here should became new Body region, to load all views called from the other controllers
       //something like @RenderBody(), but this don't works
    </div>
    <div id="sidebar">
    

    Entities

    
    
      @Html.Partial("_EntitiesMenu")
            
    </div>
    

    मैं संस्था नियंत्रकों या विचारों में परिवर्तन नहीं करना चाहता (या यदि आवश्यक हो तो न्यूनतम परिवर्तन, क्योंकि उनमें से बहुत सारे हैं)। क्या मैं किसी भी तरह से उस क्षेत्र को मुख्य निकाय के रूप में निर्दिष्ट कर सकता हूं, जबकि संस्थाओं के दायरे में? और यदि उपयोगकर्ता शीर्ष होम/इसके बारे में क्लिक करता है, तो वह _layout.cshtml से EntitiesView को "अनलोड" करेगा?

    सुनिश्चित नहीं है कि मेरा प्रश्न बहुत स्पष्ट है, लेकिन मुझे उम्मीद है कि कोई समझ जाएगा कि मैं क्या कर रहा हूं।

    धन्यवाद

    0

    2 उत्तर

    1
    जोड़ा
    काफी नहीं, क्योंकि @RenderSection केवल मुख्य दृश्य में हो सकता है, और मैं इसे एंटिटीज इंडेक्स व्यू में रखना चाहता था। मैं जो कुछ चाहता हूं उसके करीब कुछ पाने के लिए मैंने इसे "हैक" करने में कामयाब रहा, लेकिन इसे सभी दृश्यों को बदलने की आवश्यकता थी, पहले @section {..} में दृश्य कोड को "लपेटें" और फिर इकाई मेनू लोड करने के लिए आंशिक के रूप में देखें। एक अच्छा समाधान नहीं है क्योंकि इसमें बहुत सारी फाइलें बदलना शामिल है और डिज़ाइन साफ़ नहीं है। कोई अन्य विचार?
    जोड़ा लेखक bzamfir, स्रोत

    मैंने निम्नलिखित दृष्टिकोण का उपयोग करके मुझे जो कुछ चाहिए, उसके करीब कुछ हासिल करने के लिए प्रबंधित (प्रकार)

    1. Changed the _layout as below

      <div> @RenderBody() </div> <div> @RenderSection("EntityCRUD", false) </div>
       
      
    2. Created the view for Entities as:

      @Html.Partial("_PanelEntitiesMenu")

    3. Defined _PanelEntitiesMenu as

      <div id="sidebar">
      

      Entities


        @Html.Partial("_EntitiesMenu")
              
      </div> 
      
    4. Enclosing the entities views (Index, Edit/Delete/Details/Create) in

      @section EntityCRUD
      {
      @Html.Partial("_PanelEntitiesMenu")
      //... original view code
      }
      
    5. Changed all involved views to have the view "body" included in section, and at the beginning of the section I load the panel menu as partial view

      @section EntityCRUD
      {
          @Html.Partial("_PanelEntitiesMenu")
          ....
      }
      

    बिल्कुल वही नहीं जो मैं चाहता था, लेकिन यह अब तक का सबसे अच्छा है।

    0
    जोड़ा