asp.net - 为什么我的 .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>
解决方案
推荐阅读
- firebase - 用户代理在 react-native-webview 中不起作用
- phpstorm - Chrome 总是加载
- python - 散点图 y 轴是分开的
- vb.net - 在 Windows.Devices.Bluetooth UWP GattLocalCharacteristic 上引发的 WriteWithoutResponse WriteRequested 事件无序
- python - 使用 RQGIS 链接到 QGIS 时如何修复“ImportError: No module named builtins”?
- python - 如何在使用随机时将子列表与其列表匹配?
- php - 如何从左连接表中获取下拉值
- vue.js - 如何在不调用 vue.js 中的方法的情况下从点击中显示项目?
- python - python selenium 无法定位子元素
- python - 使用 pandas df.query() 过滤分类(间隔)列