Skip to main content

Minimal API

Return partials from Minimal API endpoints using TurboResults:

app.MapGet("/items", (HttpContext ctx) =>
{
if (ctx.IsTurboFrameRequest())
{
return TurboResults.Partial("_Items", model);
}
return Results.Redirect("/");
});

Validation Failures

Return HTTP 422 for inline form validation errors:

app.MapPost("/contact", async (HttpContext context, string? name, string? email) =>
{
var errors = new Dictionary<string, string>();

if (string.IsNullOrWhiteSpace(name))
{
errors["Name"] = "Name is required.";
}

if (errors.Count > 0)
{
return TurboResults.ValidationFailure("_ContactForm", new { Name = name, Errors = errors });
}

return TurboResults.Partial("_ContactSuccess");
});

Available Methods

// Render a partial
TurboResults.Partial("_PartialName");
TurboResults.Partial("_PartialName", model);

// Render a partial with 422 status
TurboResults.ValidationFailure("_FormPartial");
TurboResults.ValidationFailure("_FormPartial", model);

// Using source-generated PartialTemplate references
TurboResults.Partial(Partials.Items, model);
TurboResults.ValidationFailure(Partials.FormPartial, model);

For more details, see the Form Validation Guide.