एक एमवीसी 3 आवेदन में, क्या इसे .cshtml
दृश्य में एक रेजर ब्लॉक @{ }
के अंदर एक प्रयास पकड़ ब्लॉक का उपयोग करने के लिए बुरी आदत माना जाता है?एक बुरे अभ्यास को देखने में कोशिश करें?
उत्तर
बहुत कुछ।
दृश्यों में कोई वास्तविक तर्क नहीं होना चाहिए; कुछ भी जो अपवाद फेंक सकता है नियंत्रक में आता है।
इस तरह के कंबल बयान कभी सटीक नहीं हैं। क्या आप कह रहे हैं कि किसी भी कोड को देखने में बुरा फॉर्म है? तो रेजर क्यों मौजूद है? और यदि आपके पास एक दृश्य में कोड है, तो निश्चित रूप से ऐसे मामले हो सकते हैं जहां अपवाद (जैसे कि बाहरी फ़ाइल की अनुपलब्धता) को संभालने की आवश्यकता है। – Gullbyrd
क्या होगा यदि यह साझा आंशिक दृश्य है और इसके लिए कोई नियंत्रक नहीं है? –
@MaksimVi .: तो आपको इसके बजाय एक बच्चे की कार्रवाई का उपयोग करना चाहिए। – SLaks
मैं ऐसा कहूंगा। इष्टतम मार्ग मॉडल को दृश्य तक पहुंचने से पहले नियंत्रक द्वारा सत्यापित दृश्य को पास करना होगा।
अच्छा आपका उपयोग आपके आवेदन के विनिर्देशों पर निर्भर करता है, हालांकि आपको अपने विचारों को यथासंभव नंगे रखने की कोशिश करनी चाहिए। आदर्श रूप से कोड वैधता नियंत्रक में सत्यापित की जाएगी और दृश्य को कभी नहीं पारित किया जाएगा।
ऐसे कोड को दृश्य में न रखें। दृश्य केवल आपके प्रदर्शन मार्कअप के लिए जितना संभव हो सके होना चाहिए। आप उस कंट्रोलर एक्शन विधि में पकड़ने की कोशिश कर सकते हैं जो डेटा को देखने के लिए आपूर्ति करता है।
public ActionResult GetUser(int id)
{
try
{
//Get the ViewModel and return the correct View.
}
catch(Exception ex)
{
//log the error
return View("YourErrorView");
}
}
ध्यान रखें कि एमवीसी पर जोर देने वाली चीजों में से एक चिंताओं को अलग करना है। दृश्य स्वच्छ और पठनीय मार्कअप होना चाहिए।
यह करने के लिए एक अच्छी बात नहीं है। एमवीसी ढांचे को तर्क के साथ दृश्य को अलग करने के लिए डिज़ाइन किया गया है। तो नियंत्रक में तर्क होना चाहिए, जहां यह होना चाहिए।
@{
try
{
<td>
@((TradeType)Enum.Parse(typeof(TradeType), item.AppCode)).GetDescription();
</td>
}
catch
{
<td>@item.AppCode
</td>
}
}
वास्तव में प्रश्न का उत्तर नहीं: सवाल यह था कि यह अच्छा अभ्यास था, न कि यह कैसे किया जाता है। – Stephen
हालांकि यह सवाल का जवाब दे सकता है, लेकिन यह किसी भी स्पष्टीकरण के पीछे नहीं छोड़ा गया कि यह क्यों काम करता है। यह उत्तर बाद के आगंतुकों के लिए अधिक मूल्य नहीं जोड़ता है जो एक ही समस्या हो सकती है। कुछ स्पष्टीकरण शामिल करने के लिए कृपया अपना उत्तर विस्तृत करें। –
- 1. सभी अपवाद अच्छे या बुरे को पकड़ो?
- 2. सबसे बुरे अमूर्त उलट
- 3. Symfony2 - प्रोड पर्यावरण में मेरी साइट को देखने की कोशिश एक खाली स्क्रीन में परिणाम; देव
- 4. कोशिश करें।
- 5. जावा में कोशिश करें/पकड़ें
- 6. उन भाषाओं में को छोड़कर अंततः कोशिश करें या कोशिश करें-
- 7. एक उपयोगकर्ता को एकल डेटाबेस देखने के लिए GRANT? (बाकी को देखने से इंकार कर दें)
- 8. जावास्क्रिप्ट एक रेल अनुप्रयोग में टैग सर्वश्रेष्ठ अभ्यास शामिल करें
- 9. क्या लक्षण अच्छे या बुरे हैं?
- 10. एक कस्टम व्यूपेज को बढ़ाने की कोशिश करें
- 11. एप्लिकेशन को देखने से कैसे प्राप्त करें?
- 12. knockoutjs में देखने योग्य सरणी तत्व को कैसे अपडेट करें?
- 13. नेस्टेड कोशिश करें/पकड़ें
- 14. कैच की कोशिश करें
- 15. पाइथन कोशिश करें लैम्बडा
- 16. कोशिश करें .. हमेशा ब्लॉक को पकड़ें?
- 17. जावास्क्रिप्ट कोशिश करें/पकड़ें
- 18. दोहराव कोशिश करें और खंडों को छोड़कर
- 19. कोशिश करें ... आखिरकार एमएसबिल्ड
- 20. जावा - क्या कोशिश/पकड़ के अंदर कोशिश/पकड़ करने का बुरा अभ्यास है?
- 21. ब्राउज़र में मास्टर पेज को देखने के लिए कैसे करें
- 22. सहायक जानकारी देखने में मदद करें
- 23. क्या सी # में घोंसला पकड़ने की कोशिश करने के लिए यह बुरा अभ्यास है?
- 24. रेल: नियंत्रक/कार्रवाई को देखने में कैसे निर्धारित करें
- 25. कोशिश को छोड़कर ब्लॉक
- 26. आईफोन में कोशिश करें और पकड़ें?
- 27. एक कोशिश ब्लॉक में जावास्क्रिप्ट स्कोप
- 28. एकाधिक या एकल कोशिश करें
- 29. अभ्यास में सत्र अपहरण
- 30. ब्राउज़र स्रोत को देखने के तरीके को कैसे लॉन्च करें?
पृथ्वी पर क्या है? – SLaks
@ एसएलएक्स - जैसा कि आपने कहा था, इसके लिए कोई अच्छा कारण नहीं है और गलत जगह पर तर्क होगा - मैंने अभी तक यह नहीं किया है, लेकिन बस थोड़ा और आगे चाहता था। कारण यह है कि मुझे एहसास हुआ कि मेरे पास उस ऑब्जेक्ट को जोड़ने से दृश्य में अपवाद था, जिस पर एक बिंदु पर वैध विदेशी था, लेकिन उस विदेशी वस्तु को डेटाबेस से हटा दिया गया था। यहां एक एसोसिएशन का एक उदाहरण दिया गया है: 'phase.Container = कंटेनर। जहां (cont => cont.ContainerId == phase.ContainerId) .SingleOrDefault(); '। मुझे यहां अपवादों को संभालना होगा। क्या सभी linq कोशिश पकड़ने के साथ घिरा होना चाहिए? –