2010-08-06 9 views
7

पर परिणाम प्रकार निर्धारित करें मैं एक एमवीसी.NET 2.0 प्रोजेक्ट पर काम कर रहा हूं जहां मैं नियंत्रक की ऑनएक्सप्शन विधि में कुछ विशेष त्रुटि हैंडलिंग तर्क डाल रहा हूं। असल में मैं नियंत्रक विधि के परिणाम प्रकार को निर्धारित करने में सक्षम होना चाहता हूं जिसमें अनचाहे अपवाद उठाया गया था, ताकि मैं प्रकार पर निर्भर एक निश्चित प्रारूप में त्रुटि डेटा वापस कर सकूं (JsonResult के लिए जेसन और ActionResult के लिए HTML)। क्या कोई मुझे उस प्रकार को निर्धारित करने के लिए किसी तरीके से इंगित कर सकता है? मै किसी भी सहायता के लिए बहुत आभारी रहूँगा।नियंत्रक के ऑनएक्सप्शन

अग्रिम धन्यवाद

उत्तर

4

मान लिया जाये कि आप फ्लॉप डिफ़ॉल्ट रूटिंग बदलने के लिए:

protected override void OnException(ExceptionContext filterContext) 
{ 
    var action = filterContext.RouteData.Values["action"].ToString(); 
    var type = filterContext.Controller.GetType(); 
    var method = type.GetMethod(action); 
    var returnType = method.ReturnType; 
    //...do whatever here... 
} 

गुड लक!

+0

उसी नाम के साथ दो कार्यों को देखते हुए, जैसे संपादित करें और संपादित करें (एक प्राप्त करें, एक पोस्ट), यह एक अस्पष्ट मैच अपवाद देता है। क्या संदर्भ से निर्धारित करने का कोई तरीका है जिसे क्रिया कहा जाता था? – yoozer8

+2

@ जिम आप टाइप.GetMethods() का उपयोग कर सकते हैं। उस मामले में जहां (m => m.Name.Equals (action)) और वर्तमान अनुरोध में उपयोग की गई क्रिया को जानने और गुणों को देखकर सही विधि प्राप्त करें प्रत्येक विधि का। – uvita