मैं एएसपी.नेट एमवीसी 3 डब्ल्यू/रेजर का उपयोग करके एक नई परियोजना पर काम कर रहा हूं और उसी साइट के 2 अलग-अलग विचारों, एक पूर्ण संस्करण और मोबाइल संस्करण का विकास कर रहा हूं। समान नियंत्रकों का उपयोग करने के लिए सर्वोत्तम प्रथाओं/दृष्टिकोण क्या हैं, लेकिन उपयोगकर्ता एजेंट के आधार पर अलग-अलग विचार प्रदर्शित करते हैं? क्या मुझे इसे नियंत्रकों में संभालना चाहिए? ऐसा लगता है कि यह बोझिल, अनावश्यक, त्रुटि होगी यदि प्रत्येक नियंत्रक कार्रवाई में स्टेटमेंट उपयोगकर्ता एजेंट की जांच कर रहा है और फिर उनके डिवाइस के आधार पर एक अलग दृश्य लौटा रहा है।एएसपी.नेट एमवीसी समान नियंत्रकों का उपयोग कर अलग-अलग मोबाइल दृश्य
उत्तर
यह अब का उपयोग कर पूरा किया जा सकता निर्मित एक दो प्रदर्शन मोड में निर्मित के साथ "DisplayModes"
डिफ़ॉल्ट रूप से, ASP.NET MVC जहाजों बुलाया (4 संस्करण के बाद से) ASP.NET MVC की सुविधा। डिफॉल्ट डिस्प्ले मोड है, जो आपके "मानक" विचारों को हमेशा के रूप में प्रस्तुत करता है, और एक सामान्य "मोबाइल" डिस्प्ले मोड भी है।
यह पता लगाकर काम करता है कि क्लाइंट डिवाइस एक मोबाइल ब्राउज़र है या नहीं (जिसे क्लाइंट डिवाइस के User-Agent string को स्नीफ करके निर्धारित किया जाता है, इसलिए 100% विश्वसनीय नहीं)। यदि डिवाइस मोबाइल डिवाइस होने के लिए निर्धारित है, तो क्लाइंट को भेजे गए वास्तविक एमवीसी व्यू को ओवरराइड किया गया है और वैकल्पिक दृश्य प्रस्तुत किया जाता है और इसके बजाय भेजा जाता है। शामिल मोबाइल प्रदर्शन मोड के मामले में, यह एक नहीं बल्कि .cshtml
से .mobile.cshtml
का प्रत्यय के साथ देखें (जैसा कि नीचे स्क्रीनशॉट में दिखाया गया)
यह आपको पूरी तरह से अलग विचारों डिजाइन करने के लिए अनुमति देता है देखने के लिए कॉन्फ़िगर किया गया है जिसे आपके नियंत्रक तर्क में किसी भी परिवर्तनों की आवश्यकता के बिना एक मोबाइल बनाम एक गैर-मोबाइल डिवाइस पर भेजा जाएगा, इसलिए आपको वहां कोई सशर्त तर्क शामिल करने की आवश्यकता नहीं है।
यदि आपको क्लाइंट डिवाइस पर भेजे गए सटीक दृश्य पर अधिक नियंत्रण की आवश्यकता होती है, तो संपूर्ण प्रदर्शन मोड कार्यक्षमता कॉन्फ़िगर करने योग्य और एक्स्टेंसिबल है। आप अपने स्वयं के डिस्प्ले मोड (आमतौर पर एप्लिकेशन स्टार्टअप में प्रदर्शन) को परिभाषित कर सकते हैं जो किसी दिए गए ब्राउज़र, किसी दिए गए डिवाइस या आपकी मनमानी परिभाषा के लिए विशिष्ट हो सकता है। सभी क्लाइंट डिवाइस से आने वाले उपयोगकर्ता एजेंट स्ट्रिंग पर आधारित हैं।
निम्नलिखित स्निपेट पर विचार करें कि नीचे ऐप्लिकेशन प्रारंभ विधि में विंडोज फोन, iPhone और Android के लिए 3 अतिरिक्त कस्टम प्रदर्शन मोड जोड़ने पता चलता है:
protected void Application_Start()
{
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("WP")
{
ContextCondition = (context => context.GetOverriddenUserAgent().
IndexOf("Windows Phone OS",StringComparison.OrdinalIgnoreCase) >= 0)
});
DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.GetOverriddenUserAgent().
IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
DisplayModeProvider.Instance.Modes.Insert(2, new DefaultDisplayMode("Android")
{
ContextCondition = (context => context.GetOverriddenUserAgent().
IndexOf("Android", StringComparison.OrdinalIgnoreCase) >= 0)
});
}
प्रत्येक प्रदर्शन मोड एक आईडी और के लिए एक स्ट्रिंग दिया जाता है यह निर्धारित करने के लिए कि यह डिस्प्ले मोड उपयोग किया जाना है, उपयोगकर्ता एजेंट स्ट्रिंग से मिलान करें। यदि ऐसा है, तो DisplayModeProvider एक ही स्ट्रिंग प्रत्यय के साथ एक दृश्य की तलाश करेगा। (यानि ऊपर आईफोन डिस्प्ले मोड के लिए, हम उपयोगकर्ता एजेंट स्ट्रिंग में कहीं भी स्ट्रिंग "आईफोन" ढूंढने की उम्मीद करते हैं, और यदि यह मौजूद है, तो हम इस डिस्प्ले मोड का उपयोग करते हैं जो प्रत्यय के बजाय iphone.cshtml
प्रत्यय के साथ दृश्य प्रस्तुत करता है।
आप इस कार्यक्षमता के बारे में अधिक पढ़ सकते हैं:। http://www.asp.net/mvc/overview/older-versions/aspnet-mvc-4-mobile-features वर्गों में विशेष रूप से अध्यक्षता में "अधिभावी दृश्य, लेआउट, और आंशिक दृश्य" और "ब्राउज़र-विशिष्ट दृश्य"
ग्रीस के लिए धन्यवाद जवाब नहीं! आपके उत्तर के आधार पर मैं कोड में अलग-अलग छवियों के लिए पथ बनाना चाहता हूं, न कि 'व्यू' में। क्या किसी भी तरह नियंत्रक में करना संभव है? –
- 1. एमवीसी 4: कुछ नियंत्रकों पर मोबाइल दृश्य अक्षम करें
- 2. एएसपी.नेट एमवीसी 4 मोबाइल विशेषताएं
- 3. यूनिट परीक्षण एमवीसी 3 नियंत्रकों और दृश्य
- 4. एक दृश्य (एएसपी.नेट एमवीसी)
- 5. एएसपी.नेट एमवीसी 4 मोबाइल-एवेयर आउटपुट कैश
- 6. एएसपी.नेट एमवीसी में नियंत्रकों को छोटा कैसे रखें?
- 7. एएसपी.नेट एमवीसी
- 8. एएसपी.नेट एमवीसी दृश्य - क्या मैं कोड-पीछे
- 9. एएसपी.नेट एमवीसी 3 में सत्र-कम नियंत्रकों का उपयोग करने का क्या फायदा है?
- 10. एएसपी.नेट एमवीसी
- 11. एएसपी.नेट एमवीसी
- 12. एएसपी.नेट एमवीसी
- 13. एएसपी.नेट एमवीसी
- 14. एएसपी.नेट एमवीसी अनुप्रयोग में नियंत्रकों/कार्रवाइयों की सूची तक पहुंच
- 15. एएसपी.नेट एमवीसी नियंत्रकों के बीच कोड साझा करना
- 16. एएसपी.नेट एमवीसी
- 17. एएसपी.नेट एमवीसी 3
- 18. एएसपी.नेट एमवीसी नियंत्रकों में दशमलव विभाजक कैसे सेट करें?
- 19. एएसपी.नेट एमवीसी में नियंत्रकों के बाहर HttpContext तक कैसे पहुंचे?
- 20. जेएसन का उपयोग एएसपी.नेट एमवीसी नियंत्रक
- 21. एएसपी.नेट एमवीसी?
- 22. एएसपी.नेट एमवीसी में नियंत्रकों और उपयोगकर्ता नियंत्रण का उपयोग कर सक्रिय टैब सेट करने का एक आसान तरीका है?
- 23. एएसपी.नेट एमवीसी डिस्प्ले टेम्पलेट का उपयोग पूर्णांक
- 24. एएसपी.नेट एमवीसी रूटिंग रूट स्तर दृश्य
- 25. एएसपी.नेट एमवीसी:
- 26. एएसपी.नेट एमवीसी एक्शन विधियों का उपभोग
- 27. एएसपी.नेट एमवीसी
- 28. क्यूटीआईपी jQuery प्लगइन का उपयोग कर एएसपी.नेट एमवीसी प्रमाणीकरण
- 29. एएसपी.नेट एमवीसी का उपयोग कर डैशबोर्ड उपयोगकर्ता इंटरफ़ेस कैसे बनाएं?
- 30. एएसपी.नेट एमवीसी
मुझे लगता है उसका उल्लेख कर इस * योजना बनाई है लायक है * एमवीसी 4 के लिए http://aspnet.codeplex.com/wikipage?title=ASP.NET%20MVC%204%20 रोडमैप –
कृपया एक सही के रूप में एवरर को चिह्नित करें। –