I have this
[HttpPost]
[Route("client/{clientid}/employees")]
[SwaggerOperation(Tags = new[] { "Client" })]
public async Task<Unit> AddClientEmployee(AddClientEmployeeCommand request)
{
return await _mediator.Send(request);
}
public class AddClientEmployeeCommand : IRequest<Unit>
{
[FromRoute]
public Guid ClientId { get; set; }
[FromBody]
public Employee Employee { get; set; } = new Employee();
}
The {clientid}
from Route
won't bind to AddClientEmployeeCommand.ClientId
unless I change it to {ClientId}
. Is there any way to disable case-sensitive for this case?
CodePudding user response:
When you try to bind a class property with FromRoute
it try to find a route section based on that property name and because the clientid
is not equal with ClientId
it won't bind. For solve this you should specify name for property like this:
public class AddClientEmployeeCommand : IRequest<Unit>
{
[FromRoute(Name = "clientid")]
public Guid ClientId { get; set; }
[FromBody]
public Employee Employee { get; set; } = new Employee();
}
Also for preventing binding error in calling api you can specify type in the route
[Route("client/{clientid:guid}/employees")]