2017-04-25 61 views
3

MVC行動的迴應,我有如下的HttpPost動作:讀取/修改與過濾器

[HttpPost] 
public string GetPerson() 
{ 
    string output = GetPerson(); 
    return output; 
} 

我返回XML作爲一個字符串。有沒有可能在actionfilter的OnResultExecuted或OnResultExecuting方法中讀取這個字符串?

+1

是的您必須創建一個新屬性。你想達到什麼目的? –

+0

@Mads ... thx爲你的幫助。我想記錄所有傳入和傳出。我可以看到請求,但不能讀取回復。 –

+0

@OmerK我已經更新了我的答案以包含樣本。 – scartag

回答

1

在這些actionfilters的每一個上,你都可以得到結果(一個ActionResult對象)。

對於OnResultExecuted可以從ResultExecutedContext.Result財產

我下面增加了一個樣本得到它。

public class InterceptValueAttribute : ActionFilterAttribute 
{ 


    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 

     var result = filterContext.Result as ContentResult; 

     var data = result.Content; 

     //use data as required 

    } 

} 

您可以在下面的操作中使用它。

[HttpPost] 
[InterceptValue] 
public string GetPerson() 
{ 
    string output = GetPerson(); 
    return output; 
} 
+0

thx,這就是我一直在尋找的。但是,如果我的行動返回視圖,上面的作品又是什麼? –

+0

@OmerK不是真的......當你的動作返回一個字符串(這就是爲什麼我使用了一個內容結果)的時候,你可以從ActionResult數據中記錄任何你想要的東西。 – scartag

+0

@OmerK如果您期待ActionResult而不是ContentResult,則可以使用result.ToString()代替'result.Content'。 – scartag