ModelState.IsValidをチェックするアクション前のWebAPIフックがあります。 ModelStateが有効でない場合、アクションを実行せず、すぐにメッセージを返します。これをどのように正確に行うのですか?
public class ValidateModelStateAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) {
if (!actionContext.ModelState.IsValid)
{
var msg = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
// Now What?
}
base.OnActionExecuting(actionContext);
}
}
response.Resultを設定します。結果がnullでない場合、アクションは実行されません。正確な構文は今私を逃れていますが、それは同じくらい簡単です
if(actionContext.ModelState.IsValid == false)
{
var response = actionContext.Request.CreateErrorResponse(...);
actionContext.Response = response;
}
ASP.NET WebApiページで実際に例を見たことがありますか?
あなたが達成しようとしていることと非常によく似ており、彼らが行うのはContextオブジェクトのResponseを設定することだけです。
If model validation fails, this filter returns an HTTP response that contains the validation errors. In that case, the controller action is not invoked.
http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api
見る: Handling Validation Errors
私の推測では、HttpResponseExceptionをスローする必要があります