asp.net mvc 2 - How can I make HandleErrorAttribute work with Ajax? -


मेरे asp.NET MVC 2 अनुप्रयोग में मैं हैंडलएरराअटिवेट का उपयोग अनियंत्रित अपवादों के मामले में कस्टम त्रुटि पृष्ठ प्रदर्शित करने के लिए करता है, और यह काम करता है पूरी तरह से जब तक कि एजेक्स एक्शनलिंक द्वारा कॉल की गई कार्रवाई में कोई अपवाद नहीं होता है। इस मामले में कुछ नहीं होता है "Error.ascx" आंशिक दृश्य की सामग्री के साथ लक्ष्य तत्व को अपडेट करने के लिए HandleErrorAttribute का उपयोग करना संभव है?

इसे प्राप्त करने के लिए आप कस्टम क्रिया फिल्टर लिख सकते हैं:

  सार्वजनिक वर्ग AjaxAwareHandleErrorAttribute: HandleErrorAttribute {सार्वजनिक स्ट्रिंग PartialViewName {get; सेट; } सार्वजनिक ओवरराइड शून्य ओनक्सास्टेशन (अपवाद कंसल्टेंट फिल्टर कंटैक्स) {// सामान्य अपवाद हैंडलिंग नियमीयन बेस को निष्पादित करें। एक्सएक्सेशन (फिल्टर कंटैक्स); // अगर AJAX अनुरोध का सत्यापन करें (filterContext.HttpContext.Request.IsAjaxRequest ()) {// AJAX अनुरोध के मामले में आंशिक दृश्य का उपयोग करें var परिणाम = नया आंशिक दृश्य (); परिणाम। ViewName = PartialViewName; FilterContext.Result = परिणाम; }}}  

और फिर आंशिक दृश्य का उपयोग करने के लिए निर्दिष्ट करें:

  [AjaxAwareHandleError (PartialViewName = "~ / views / shared / error.ascx" )] पब्लिक क्लास होम कंट्रोलर: कंट्रोलर {पब्लिक एक्शन रीजल्ट इंडेक्स () {वापसी देखें (); } सार्वजनिक कार्यप्रणाली कुछएक्शन () {नया अपवाद फेंक ("मुझे नहीं कहा जाना चाहिए"); }}  

और अंत में आपके विचार में आपके पास निम्न लिंक है:

  & lt;% = Ajax.ActionLink ("कुछ पाठ", "कुछ एक्शन ", नया AjaxOptions {UpdateTargetId =" परिणाम ", OnFailure =" handleFailure "})% & gt;  

आप उचित div को अपडेट करने के लिए handleFailure फ़ंक्शन बना सकते हैं:

  & lt; script type = "text / javascript" & gt; फ़ंक्शन संभालफाइलर (एक्सह्रर) {// आंशिक var त्रुटि = xhr.get_response () द्वारा प्राप्त त्रुटि पाठ प्राप्त करें। Get_responseData (); // कहीं DOM document.getElementById ('त्रुटि') में त्रुटि पाठ रखें। InnerHTML = त्रुटि; } & Lt; / script & gt;  

Comments