दिलचस्प पोस्ट
कैसे पीडीओ के बाहर त्रुटि संदेश निचोड़? पीआईपी और कंडो के बीच क्या अंतर है? दो भौगोलिक स्थानों के बीच दूरी की गणना करना एक आस्ति शब्द में संपत्ति नाम के चारों ओर वर्ग कोष्ठक क्या मतलब है? टेम्पर्ड लर्बी टोकन – नकारात्मक लेटरहेड से पहले डॉट रखने के बारे में क्या भिन्न है मैं ctrl + alt + del और ctrl + tab सहित सभी प्रमुख घटनाओं को कैसे रोक सकता / सकती हूं? फ्रेगमेंट के लिए थीम सेट करें एक अस्थिर कनेक्शन पर एक बड़ी परियोजना के लिए एक git क्लोन कैसे पूरा करें? इनपुट प्रकार छवि फ़ॉर्म मूल्य सबमिट करें? आप एक लंबी ऑडियो क्लिप कैसे खेलते हैं? PHP के साथ पीएनजी पारदर्शिता MySQL और जेडीबीसी के साथ दोबारा लिखे गए स्टैटमेंट्स = सच मैं node.js में डिफ़ॉल्ट समयक्षेत्र कैसे सेट कर सकता हूं? द्विपक्षीय जेपीए वनटॉमी / कई टीओओन एसोसिएशन में, "संघ के व्यस्त पक्ष" का क्या मतलब है? संशोधित तिथि के आधार पर सॉर्ट करने के लिए स्कैंडर ()

सरल एएसपी.नेट एमवीसी सीआरयूयूडी जावास्क्रिप्ट यूआई संवाद में खोलने / समापन दृश्य

मेरे सीआरयूडी संचालन के लिए कई साधारण एएसपी.नेट एमवीसी दृश्य हैं जो एक साधारण वेबपेज के रूप में अपने दम पर ठीक काम करते हैं। अब मैं उन्हें वेबसाइट में एकीकृत कर दूँगा (उदाहरण के लिए) और उदाहरण के लिए "नई पोस्ट बनाएं" जैसे लिंक चुनते हैं जो कि चुने गए लाइटबॉक्स क्लोन में दृश्य को आग लगाते हैं (अभी तक पता नहीं है कि एक, शायद रंग बॉक्स या थिकबॉक्स लेकिन इससे कोई फर्क नहीं पड़ता)।

मैं क्या हासिल करना चाहता हूं यह कि किसी भी तरह से पता चलता है कि यह एक जावास्क्रिप्ट यूआई संवाद में खोला गया था, ताकि फॉर्म एक्शन (सामान्य तौर पर एक साधारण जमा बटन का उपयोग करके पोस्ट) एक तर्क के साथ प्रदान किया जाएगा जो यूआई संवाद को बंद कर देगा कार्रवाई की है।

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

उम्मीद है कि आप मेरे प्रश्न को समझेंगे किसी भी मदद की सराहना की

वेब के समाधान से एकत्रित समाधान "सरल एएसपी.नेट एमवीसी सीआरयूयूडी जावास्क्रिप्ट यूआई संवाद में खोलने / समापन दृश्य"

आपका भाग्य, मैंने यह किया है!

तो आपको अपनी ज़रूरत के लिए एक नया व्यूइंजिन एक पृष्ठ को सभी सामान्य हेडर / पाद लेख सामान के बिना प्रदान करने के लिए प्रबंधित करना है जो आपके मोडल खिड़कियों के रास्ते में मिल जाएगा। ऐसा करने के लिए सबसे आसान तरीका है अपने मोडल खिड़कियों के लिए ज्यादातर खाली मास्टर पृष्ठ का उपयोग करना। आप मास्टर पेज को तर्क से स्विच करना चाहते हैं और एक कस्टम व्यू एंजेन में क्योंकि अन्यथा प्रत्येक नियंत्रक विधि के पास होने वाला है अगर सभी () अन्य () सभी जगह IsAjaxRequest का पता लगाने का प्रयास करते हैं मुझे सूखे, सहारा सूखी पसंद है

इस तकनीक के साथ मुझे अपमानजनक रूप से बेहद सुन्दरता का लाभ भी मिलता है। जावास्क्रिप्ट के बिना मेरी साइट फ़ंक्शन सिर्फ पूरी तरह से लिंक ठीक हैं, रूपों का काम करते हैं, शून्य कोड परिवर्तन "मोडल जागरूक साइट" से जाने के लिए सादे पुरानी एचटीएमएल प्रपत्र प्रस्तुत करते हैं।

मैंने सभी को डिफॉल्ट इंजन उप-वर्ग दिया था और कुछ मास्टरपेज चयन बिट्स को जोड़ दिया था:

दृश्य इंजन:

public class ModalViewEngine : VirtualPathProviderViewEngine { public ModalViewEngine() { /* {0} = view name or master page name * {1} = controller name */ MasterLocationFormats = new[] { "~/Views/Shared/{0}.master" }; ViewLocationFormats = new[] { "~/Views/{1}/{0}.aspx", "~/Views/Shared/{0}.aspx" }; PartialViewLocationFormats = new[] { "~/Views/{1}/{0}.ascx", }; } protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath) { throw new NotImplementedException(); } protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath) { return new WebFormView(viewPath, masterPath ); } public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { //you might have to customize this bit if (controllerContext.HttpContext.Request.IsAjaxRequest()) return base.FindView(controllerContext, viewName, "Modal", useCache); return base.FindView(controllerContext, viewName, "Site", useCache); } protected override bool FileExists(ControllerContext controllerContext, string virtualPath) { return base.FileExists(controllerContext, virtualPath); } } 

तो मेरे मॉडल.मास्टर पृष्ठ बहुत सरल है। मेरे पास एक div wrapper है, इसलिए मुझे पता है कि जब कुछ मोडल खिड़की के भीतर गाया जाता है जब आप तत्वों "मोडल मोड" में हैं, तो आपको jquery के साथ कुछ तत्वों को चुनने की आवश्यकता होगी, जब यह उपयोगी होगा।

Modal.Master

 <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <div id="modalcontent"><asp:ContentPlaceHolder ID="MainContent" runat="server" /></div> 

अगला चरण आपका फ़ॉर्म बनाना है मैं डिफ़ॉल्ट प्रॉपर्टी नाम = इनपुट नाम का उपयोग करता हूं इसलिए मैं आसानी से बाइंड कर सकता हूं और चीजों को सरल रख सकता हूं। फॉर्म के बारे में कुछ खास नहीं है मुझे लगता है जैसे आप इसे सामान्य रूप से करेंगे (नोट करें कि मैं अपने कोड में एमवीसी 2 और एडीटरफोर () का उपयोग कर रहा हूं, लेकिन इससे कोई फर्क नहीं पड़ेगा) यहां मेरा अंतिम एचटीएमएल है:

एचटीएमएल आउटपुट

 <div id="modalcontent"> <h2>EditFood</h2> <div id="form"> <form method="post" action="/edit/food?Length=8"> <input id="CommonName" class="text-box single-line" type="text" value="" name="CommonName"/> <input class="button" type="submit" value="Edit Food"/> </form> </div> </div> 

वास्तव में अच्छी तरह से बाइंडिंग मॉडल के अलावा आप भी कम से कम कोड के साथ अपने आवेदन में स्तरित seemless और आसान अजाक्स क्षमताओं के लिए Jquery.Form प्लगइन का उपयोग कर सकते हैं। अब मैंने ColorBox को अपनी मॉडल विंडो स्क्रिप्ट के रूप में चुना है, क्योंकि मैं चाहता था कि फेसबुकस्केप पारदर्शी कोनों और मैं एक्सचेंसिबिलिटी प्वाइंट को लेखक को जोड़ा।

अब इन लिपियों के साथ आप एक बहुत अच्छा संयोजन प्राप्त करते हैं जो इस तकनीक को वास्तव में बेवकूफ़ बनाता है जो जावास्क्रिप्ट में आसान है। केवल जावास्क्रिप्ट मुझे जोड़ना था (दस्तावेज़ के अंदर)।

जावास्क्रिप्ट / jQuery

  $("a.edit").colorbox({ maxWidth: "800px", opacity: 0.4, initialWidth: 50, initialHeight: 50 }); $().bind('cbox_complete', function () { $("#form form").ajaxForm(function () { $.fn.colorbox.close() }); }); 

यहां मैं ColorBox को मेरे संपादन लिंक (संपादित करें खाद्य) के लिए एक मॉडल विंडो खोलने के लिए कह रहा हूं। फिर बाध्यकारी रंग बॉक्स की पूरी घटना को अपने एजेक्सफ़ॉर्म सामान को तार करने के लिए एक सफल कॉलबैक के साथ रंगीन बॉक्स को बताने के लिए मोडल विंडो बंद करने के लिए जाएं। बस।

इस कोड को अवधारणा के सबूत के रूप में पूरा किया गया था और यही वजह है कि दृश्य इंजन वास्तव में लाइट है और इसमें कोई सत्यापन नहीं है या अन्य मानक फॉर्म ब्लिंग नहीं है। Colorbox और JQuery.Form में बहुत अधिक अनुकूलता समर्थन है ताकि अनुकूलित करना आसान होना चाहिए।

ध्यान दें यह सब एमवीसी 2 में किया गया था, लेकिन यह मेरा नियंत्रक कोड है, बस दिखाने के लिए यह कितना आसान है। अवधारणा लक्ष्य के मेरे सबूत को याद रखना था कि ऐसे मोडल विंडोज़ कामों को ऐसे तरीके से प्राप्त करना था कि मुझे कुछ बुनियादी बुनियादी ढांचे की स्थापना के अलावा कोई भी कोड परिवर्तन नहीं करना पड़ा।

  [UrlRoute(Path="edit/food")] public ActionResult EditFood() { return View(new Food()); } [HttpPost][UrlRoute(Path = "edit/food")] public ActionResult EditFood(Food food) { return View(food); } 

JQuery के लिए यूआरएल का निर्माण करते समय एक AJAX प्राप्त करने के लिए, आप एक क्वेरी स्ट्रिंग पैरामीटर जैसे- javascriptWindow = id जोड़ सकते हैं, जब यह नियंत्रक में पाया जाता है, तो आप निष्पादन के बाद संवाद को बंद करने के लिए आवश्यक तर्क जोड़ सकते हैं।