Skip to content

Latest commit

 

History

History
46 lines (37 loc) · 1.93 KB

action-results.md

File metadata and controls

46 lines (37 loc) · 1.93 KB

ASP.Net MVC Action results

MVC Action results support allow composition handlers to set custom response results for specific scenarios, like for example, handling bad requests or validation error that would normally require throwing an exception. Setting a custom action result is done by using the SetActionResult() HttpRequest extension method:

public class UseSetActionResultHandler : ICompositionRequestsHandler
{
    [HttpGet("/product/{id}")]
    public Task Handle(HttpRequest request)
    {
        var id = request.RouteValues["id"];

        //validate the id format

        var problems = new ValidationProblemDetails(new Dictionary<string, string[]>()
        {
            { "Id", new []{ "The supplied id does not respect the identifier format." } }
        });
        var result = new BadRequestObjectResult(problems);

        request.SetActionResult(result);

        return Task.CompletedTask;
    }
}

snippet source | anchor

Using MVC action results require enabling output formatters support:

services.AddViewModelComposition(options =>
{
    options.ResponseSerialization.UseOutputFormatters = true;
});

snippet source | anchor

Note

ServiceComposer supports only one action result per request. If two or more composition handlers try to set action results, only the first one will succeed and subsequent requests will be ignored.