c# - Complex Views containing multiple Partial Views in ASP.MVC -
मेरे पास निम्न फ़ॉर्म है:
संपादित करें कुछ आंशिक दृश्य है जिसे संपादित दृश्य नामक अलग दृश्य मॉडल से संपादित करें।
खोज एक आंशिक दृश्य है, एक और आंशिक मॉडल - फ़िल्टर (_SearchFilter) और खोज परिणाम (_SearchResults)। उन सभी विचारों को एक दृश्य मॉडल, SearchVM साझा करता है।
अंत में मैं एक अपडेटिव बनाने की कोशिश कर रहा हूं जो चित्र पर दिखाता है। इसमें EditVM और SearchVM इंस्टेंस हैं।
मेरी समस्या UpdateVM के बारे में जानकारी खो रही है।
पहले मैं क्रिया अद्यतन प्राप्त कर रहा हूँ।
[ HttpGet] सार्वजनिक वर्चुअल कार्यरूट अद्यतन () {var मॉडल = नया UpdateVM (); Var सर्चVM = नया सर्चमीम (); Model.searchVM = searchVM; Var editVM = नया editVM (); Model.editVM = editVM; वापसी देखें (मॉडल); }
दृश्य इस प्रकार दिखता है:
@model updateVM @ html.partial (MVC.Shared.Views.Search, Model.searchVM) @Html। आंशिक (MVC.Shared.Views._Edit, Model.editVM)
समस्या फ़िल्टर पर खोज के साथ शुरू होती है जैसा कि आप _Search आंशिक दृश्य को देख सकते हैं केवल एक SearchVM पारित किया गया है। मुझे खोज करना चाहिए जेनेरिक, विचारों के बीच साझा किया गया है, इसलिए मैं इसे UpdateVM को नहीं दे सकता।
फ़िल्टर दृश्य _SearchFilter निम्नानुसार दिखता है:
@using ( Html.BeginForm (Model.SearchButtonAction, Model.SearchButtonController, FormMethod.Post, नया {enctype = "multipart / form-data"})) {& lt; div class = "frm_row" & gt; @ Html.TextBoxFor (मॉडल = & gt; model.Query) & lt; इनपुट प्रकार = "सबमिट करें" मान = "खोज" / & gt; & Lt; / div & gt; }
समस्या यह है कि पोस्ट एक्शन सर्चमीम उदाहरण प्राप्त कर रहा है, इसके अलावा केवल क्वेरी फ़ील्ड सेट के साथ। क्या यह संभव है कि तस्वीर पर दिखाए गए पूरे दृश्य को विभाजित किया जा सके, केवल दो कार्रवाइयों के बीच, प्राप्त करें और पोस्ट करें, UpdateVM के साथ? क्या मॉडल में पहले से संग्रहीत जानकारी को ढीली करना संभव है (खोज में कुछ सेटिंग्स हैं, उदाहरण के लिए, छोटे या बड़े मोड)?
या शायद एक मजबूत तरीके से उल्लेख किए गए दृश्य को लागू करने का कोई अन्य तरीका है? शायद मैं इसे एमवीसी शैली में नहीं करने की कोशिश कर रहा हूं?
आप लोड नहीं करना चाहते हैं मुख्य दृश्य में आपके आंशिक विचार आप चाहते हैं कि उन्हें खोज मापदंडों के आधार पर गतिशील रूप से लोड किया जाए। ऐसा करने के लिए एक एजेक्स कॉल
$ (दस्तावेज़) पर .on ('click', '.btn खोज', फ़ंक्शन () {$ .ajax ({url: '@ Url.Action ( "खोज", "नियंत्रक"), प्रकार: 'पोस्ट', कैश: गलत, async: true, डेटा: {id: $ ("# क्वेरी")। Val ()}, सफलता: कार्य (परिणाम) {$ (".divSearch")। Html (परिणाम);}});});
आपका नियंत्रक इस तरह दिखाई देगा
सार्वजनिक आंशिक दृश्य खोज (int id) {var मॉडल = // चयनित आईडी रिटर्न PartialView पर आधारित मॉडल जनसंख्या ("_partialName", मॉडल); }
और अपने खोज बटन को
& lt; इनपुट प्रकार = "बटन" मान बदलें = "खोज" वर्ग = "बीटीएन खोज" / & gt;
आप फ़ॉर्म सबमिट नहीं करना चाहते हैं ताकि आप सबमिट करने के बजाय एक बटन चाहते हों और आपको उस बटन को एक क्लास जोड़ना पड़े, जिस पर क्लिक करने की घटना के लिए आपकी स्क्रिप्ट बंद हो। । मुझे बताएं कि क्या आपके कोई प्रश्न हैं।
Comments
Post a Comment