2013-06-26 13 views
8

से डेटा लौटाएं मैं वीपी एपीआई एक्शनफिल्टर से एक जेसन ऑब्जेक्ट वापस करना चाहता हूं। मैं इसे कैसे प्राप्त कर सकता हूं?एएसपीनेट वेब एपीआई - एक्शनफिल्टर

मैं ऑब्जेक्ट को कार्रवाई से वापस कर सकता हूं लेकिन मुझे कुछ शर्त पर actionfilter से कुछ डेटा वापस करने की आवश्यकता है।

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


संपादित करें: 1 जब मैं निम्नलिखित की तरह कोड बदल गया है, ब्राउज़र अभी भी कोई प्रतिक्रिया के बिना लोड हो रहा है और टाइमआउट त्रुटि में समाप्त होता है।

public class MyActionFilterAttribute: ActionFilterAttribute 
{ 
    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     actionContext.Response = actionContext.Request.CreateResponse(
      HttpStatusCode.OK, 
      new { foo = "bar" }, 
      actionContext.ControllerContext.Configuration.Formatters.JsonFormatter 
     ); 
    } 
} 

निम्नलिखित नियंत्रक कार्रवाई मान लिया जाये:

public class ValidationActionFilter : ActionFilterAttribute 
{ 

    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 


     var modelState = actionContext.ModelState; 
     if (!modelState.IsValid) 
     { 
      List<string> arr = new List<string>(); 
      foreach (var key in modelState.Keys) 
      { 
       var state = modelState[key]; 
       if (state.Errors.Any()) 
       { 
        string er = state.Errors.First().ErrorMessage; 
        if (!string.IsNullOrEmpty(er)) 
        { 
         arr.Add(er); 
        } 
       } 
      }    

      var output = new Result() { Status = Status.Error.ToString(), Data = null, Message = arr }; 
      actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, output, actionContext.ControllerContext.Configuration.Formatters.JsonFormatter); 
     }  


    } 
} 

उत्तर

25

आपको बस रिस्पांस आवंटित करने के लिए है

[MyActionFilter] 
public string Get() 
{ 
    return "OK"; 
} 

इस कस्टम क्रिया फिल्टर होगा शॉर्ट सर्किट कार्रवाई के निष्पादन और हमारे द्वारा प्रदान की गई प्रतिक्रिया को सीधे वापस कर दें।

+0

आपके उत्तर के लिए धन्यवाद। कृपया मेरा संपादन देखें। अभी भी समस्या –

+0

मैं नेट नेट में यह कैसे कर सकता हूं? –

+1

मेरे लिए उपर्युक्त समाधान काम नहीं किया। कार्रवाई में कोड अभी भी निष्पादित किया गया था। –

संबंधित मुद्दे