首页 > 解决方案 > 为什么我的 .net core 3. 验证代码没有按预期工作?

问题描述

我正在尝试对我的报告表单进行验证,其中只有在电子邮件 = 到“Sample@email.com”时才能提交报告。我的问题是代码可以在没有验证的情况下完美运行,但是当我将验证代码包含if (!ModelState.IsValid){return View("Create");}到我的控制器中时,验证可以完美运行,但是当电子邮件正确时,它只会刷新页面而不提交或将其重定向到提交视图

控制器:

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Submit(Reports report)
        {
            if (!ModelState.IsValid)
            {
                return View("Create");
            }

        _reportRepository.CreateReport(report);
        return View();

验证码:

public class EmailValidation : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var report = (Reports)validationContext.ObjectInstance;
            if (report.Email == "Sample@email.com")
                {

                    return ValidationResult.Success;
            }
            return new ValidationResult("Invalid email");
        }
    }

报告:

public class Reports
    {
        [Key]
        public int ReportId { get; set; }
        [Required(ErrorMessage = "Please enter email.")]
        [Display(Name = "Email :")]
        [EmailValidation(ErrorMessage ="enter valid email")]
        public string Email { get; set; }
    }

创建视图:

@model Reports
@using Microsoft.AspNetCore.Identity

@inject UserManager<IdentityUser> UserManager
<body>

    <form asp-action="Submit" method="post" role="form">
        <div class="container1">
         <div class=" form-group row">
                <label asp-for="Email" class="col-md-2 control-label"></label>
                <div class="col-md-3">
                    <input asp-for="Email" class="form-control" />
                    <span asp-validation-for="Email" class="text-danger"></span>
                </div>
            </div>
        <div class="form-group row float-right">
            <div class="col-md-offset-2 col-md-5 float-md-left">
                <input type="submit" class="btn btn-primary" value="Submit" />
            </div>
        </div>

标签: asp.net.netvalidationasp.net-core

解决方案


推荐阅读