I implemented validation "required" in my "checkbox 'and it works, the" set focus "is on the field, but the validation message is not displayed!
<form asp-action="Create">
<div class="form-horizontal">
<h4>Etapa 4 - Termos de Uso</h4>
<h5>Para concluir a sua inscrição basta validar que você não é um robo e concordar com os termos de uso!</h5>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
</div>
<div class="form-group">
<div class="g-recaptcha" data-sitekey="6LcgsyITAAAAAHiF8A1MGysKGUfQddq-_uzBD8ba"></div>
</div>
<div class="form-group">
<div class="col-md-8 checkbox-inline">
<input asp-for="Aceite" required oninvalid="this.setCustomValidity('Para concluir a inscrição é necessário aceitar os termos de uso')"/>
<a href="#" data-toggle="modal" data-target="#myModal">Li e concordo com os termos de uso e privacidade</a>
</div>
</div>
<div class="form-group">
<div class="col-md-8 checkbox-inline">
<input asp-for="AceitePromocao" />
<label asp-for="AceitePromocao"></label>
</div>
</div>
<div class="form-group">
<div class="col-md-pull-12">
<input type="submit" value="Aceitar e concluir" class="btn btn-success btn-lg" />
</div>
</div>
</form>

boolproperties which will never have a validation error unless a malicious user submitted anullvalue (bothtrueandfalseare valid forbool)falsewhich is a valid value for aboolproperty so therefore no error is shown. If you want to show an error message if its left unchecked, then you can just ad aModelStateerror when you submit and return the view. Or you can write your own[MustBeTrue]validation attribute that implementIClientValidatableto get both client and server side validation