c# - ASP.NET Core Razor 页面表单输入验证不起作用
问题描述
因此,我正在开发一个理论上足够简单的带有用户帐户的问卷调查应用程序,并且我正在尝试验证用户输入。例如,在这里我试图将名字字段设为必填。我遵循了一些教程,它应该很简单,但我必须遗漏一些东西。当我检查我的模型状态是否有效以重新加载页面或发布数据时,我收到一条错误消息,告诉我这些字段是必需的,即使我已经为它们提供了一个值。为了清楚起见,我删除了一些不重要的代码部分。这里似乎有什么问题?
CreateAdmin.cshtml
@page
@model ResumePostingService.Pages.CRUD.CreateAdminModel
@{
ViewData["Title"] = "Create Admin";
Layout = "~/Pages/SharedPages/_Layout_Admin.cshtml";
}
<div>
<h2>@Model.Messages</h2>
</div>
<h2>Add a new Admin Record</h2>
<hr />
<div class="row">
<div class="col-md-4">
<form method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Admin.FirstName" class="control-label">First Name</label>
<input type="text" asp-for="Admin.FirstName" class="form-control" />
<span asp-validation-for="Admin.FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-success" />
</div>
</form>
</div>
</div>
<div>
<a asp-page="/Admin_Pages/Admin_Index" class="btn btn-danger">Cancel</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
创建Admin.cshtml.cs
namespace ResumePostingService.Pages.CRUD
{
public class CreateAdminModel : PageModel
{
private readonly ResumePostingService.Models.ResumePostingServiceDatabaseContext _context;
public CreateAdminModel(ResumePostingService.Models.ResumePostingServiceDatabaseContext context)
{
_context = context;
}
readonly DataAccessClass objadmin = new DataAccessClass();
[BindProperty]
public Admin Admin { get; set; }
public string Messages { get; set; }
public IActionResult OnGet()
{
if (HttpContext.Session.GetInt32("Admin Id") == null)
{
return RedirectToPage("/SharedPages/Unauthorized");
}
else
{
return Page();
}
}
public ActionResult OnPost()
{
if (!ModelState.IsValid)
{
Messages = string.Join("; ", ModelState.Values
.SelectMany(x => x.Errors)
.Select(x => x.ErrorMessage));
return Page();
}
objadmin.AdAddAdmin(Admin);
return RedirectToPage("/Admin_Pages/Admin_Index", new { actres = 4 });
}
}
}
管理员.cs
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ResumePostingService.Models
{
public partial class Admin
{
public Admin()
{
}
[Key]
public int AdminId { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Please enter the name")]
[StringLength(20, MinimumLength = 2, ErrorMessage = "Password cannot be longer than 20 characters and less than 2 characters")]
public string FirstName { get; set; }
}
}
解决方案
推荐阅读
- python - Robot Framework Selenium For 循环单击导航链接失败并出现 StaleElementReferenceException
- c# - 无法导航到身份注销页面-ASP.Net Core 3.1-
- c# - 从位图矩形获取圆的直径
- javascript - 为什么我会收到“未捕获的类型错误:无法读取 null 的属性‘样式’”
- pandas - 结合 prefetch_related 和 pandas
- r - 使用 acs 包在 r 中调用数据配置文件 (DP) 表
- css - 在带有网格的表单中转换
- excel - 需要帮助将范围从一个工作簿转移到另一个工作簿,每个范围都转到单独的工作表
- python - 当我设置 TZ 环境变量时,为什么 dateparser 在我的 Flask 应用程序中停止工作?
- python - Snakemake 未知数量的输出文件/基于中间文件定义通配符