提问人:Magasvazn 提问时间:11/11/2023 最后编辑:Magasvazn 更新时间:11/11/2023 访问量:26
在视图中显示 Fluent 验证错误时出现问题
Problem in showing Fluent Validation Errors in View
问:
我想在输入框下方看到 Fluent Validation 错误(我尝试使用并提交按钮方法并且它是正确的),但我需要以另一种方式进行。我的实体代码:
public class RegisterUserDTO
{
public string FullName { get; set; }
public string NationalCode { get; set; }
public string Password { get; set; }
public string RePassword { get; set; }
public List<RolesInRegisterUserDTO> Roles { get; set; }
}
public class RolesInRegisterUserDTO
{
public long Id { get; set; }
}
程序 .cs:
builder.Services.AddScoped<IValidator<RegisterUserDTO>, UserValidation>();
验证者:
public class UserValidation:AbstractValidator<RegisterUserDTO>
{
public UserValidation()
{
RuleFor(y => y.FullName)
.NotEmpty();
RuleFor(x => x.NationalCode)
.NotEmpty();
RuleFor(z => z.Password)
.NotEmpty();
}
}
控制器:
private readonly IValidator<RegisterUserDTO> _registerUserValidator;
public UsersController(IValidator<RegisterUserDTO> registerUserValidator)
{
_registerUserValidator = registerUserValidator;
}
[Authorize(Roles = "Admin")]
[HttpPost]
public IActionResult Create(RegisterUserDTO User)
{
var Result = _registerUserValidator.Validate(User);
if (!Result.IsValid)
{
Result.AddToModelState(ModelState,null);
return View("Create",User);
}
return View();
}
HTML格式:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@model IT_Parts.Application.Services.Users.Commands.RegisterUserDTO
<section>
<div class="row">
<div class="col-xxl-7 col-xl-7">
<div class="contact__wrapper white-bg">
<div class="contact__form">
<div class="row">
<div class="col-xxl-6 col-xl-6 col-lg-6 col-md-6">
<div class="contact__input-wrapper mb-25">
<div class="contact__input">
<input asp-for="FullName" type="text" placeholder="name" id="FullName" />
<span asp-validation-for="FullName"></span>
<i class="fal fa-user"></i>
</div>
</div>
</div>
<div class="col-xxl-6 col-xl-6 col-lg-6 col-md-6">
<div class="contact__input-wrapper mb-25">
<div class="contact__input">
<input asp-for="NationalCode" type="text" placeholder="national code" id="NationalCode" />
<span asp-validation-for="NationalCode"></span>
<i class="fal fa-envelope"></i>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xxl-6 col-xl-6 col-lg-6 col-md-6">
<div class="contact__input-wrapper mb-25">
<div class="contact__input">
<input asp-for="Password" type="password" placeholder="password" id="Password" />
<span asp-validation-for="Password"></span>
<i class="fal fa-smile"></i>
</div>
</div>
</div>
<div class="col-xxl-6 col-xl-6 col-lg-6 col-md-6">
<div class="contact__input-wrapper mb-25">
<div class="contact__input">
<input asp-for="RePassword" type="password" placeholder="repassword" id="RePassword" />
<span asp-validation-for="RePassword"></span>
<i class="fal fa-globe"></i>
</div>
</div>
</div>
<div class="row">
<div class="col-xxl-12">
<a onclick="Registeruser()" class="m-btn m-btn-4"> </a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
脚本:
@section Scripts
{
<link href="~/Sweetalert2/sweetalert2.min.css" rel="stylesheet" />
<script src="~/Sweetalert2/sweetalert2.min.js"></script>
<script>
function Registeruser() {
swal.fire({
title: '...',
text: "...",
icon: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'yes',
cancelButtonText: 'no'
}).then((result) => {
if (result.value) {
var FullName = $("#FullName").val();
var NationalCode = $("#NationalCode").val();
var Password = $("#Password").val();
var RePassword = $("#RePassword").val();
var postData = {
'FullName': FullName,
'NationalCode': NationalCode,
'Password': Password,
'RePassword': RePassword,
};
$.ajax({
contentType: 'application/x-www-form-urlencoded',
dataType: 'json',
type: "POST",
url: "Create",
data: postData,
success: function (data) {
if (data.isSuccess == true) {
swal.fire(
'succeed!',
data.message,
'success'
).then(function (isConfirm) {
location.reload();
});
}
else {
swal.fire(
'warning!',
data.message,
'warning'
) ;
}
},
error: function (request, status, error) {
alert(request.responseText);
}
});
}
})
}
</script>
}
当我运行代码时,会发生这种情况:
谁能帮帮我?我很困惑,因为当我通过标签和提交按钮将我的输入从视图发送到控制器时,验证错误会正确地返回回视图并显示在输入框下,但这样我不知道为什么我会看到图片中的那个。
答: 暂无答案
评论