8
wep api actionfilterからjsonオブジェクトを返したいとします。 これをどうすれば実現できますか?Asp.net Web API - actionfilterからデータを返します
アクションからオブジェクトを返すことができますが、何らかの条件でアクションフィルタからデータを返す必要があります。
ありがとうございます。
編集:1 Iブラウザはまだ任意の応答なしでロードし、タイムアウトエラーで終了し、次のようなコードを変更しました。以下のコントローラのアクションを想定し
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);
}
}
}
ご返信ありがとうございます。私の編集を見てください。まだ問題があります –
.netコアでこれを行うにはどうしたらいいですか? –
私の場合、上記の解決策は機能しませんでした。アクション内のコードはまだ実行されていました。 –