ASP.NET 核心 MVC 唯一 Phone 号码和 SSN

ASP.NET Core MVC Unique Phone Number and SSN

我正在使用 ASP.NET Core MVC Identity,我想为 Phone Number 和 SSN(国民 ID)添加一个唯一字段。由于我使用的是 .NET Identity,因此我找不到在搭建 .NET Identity 之后搭建的控制器。

据我所知,有两种方法可以解决这个问题。一个是执行 remote-validator,另一个是在 Controller 中实现一个函数。我会在数据库中搜索现有的 Phone 号码和 SSN,如果为真 return,则 JSON 结果会显示一条错误消息。但是,我该怎么做呢?还是有更有效的解决方案?

身份文件夹结构:

Register.cshtml 自定义字段片段:

    [Required(ErrorMessage ="National ID is a required field")]
    [DataType(DataType.Text)]
    [Display(Name = "Nationa ID")]
    [StringLength(10, MinimumLength =10, ErrorMessage ="National ID must be 10 digits")]
    [RegularExpression("(^[0-9]*)(^[12].*)", ErrorMessage = "National ID must be numeric")]
    //TODO: make it unique
    public string NationalId { get; set; }

    [Required(ErrorMessage ="Phone Number is a required field")]
    [DataType(DataType.PhoneNumber)]
    [Display(Name = "Phone Number")]
    [RegularExpression(@"^((?:[+?0?0?966]+)(?:\s?\d{2})(?:\s?\d{7}))$", ErrorMessage = "Not a valid phone number")] 
    //TODO: Make it unique
     public string PhoneNumber { get; set; }

谢谢

考虑使用 [Remote(action: "Action Name", controller: "Controller Name",AdditionalFields = "Your additional parameters of the action", ErrorMessage = "Message displayed in form after validation")] 在验证 属性.

之上

请注意,属性 的值将用作您操作中的第一个参数。

然后在控制器中指向属性以添加操作以从数据库json中获取结果

[AcceptVerbs("Get", "Post")]
    public async Task<IActionResult> ActionName(string phoneNumber)
    {
        // Do Database checking
        {
            // If value already exists
            return Json(false);
        }
        //If unique value
        return Json(true);
    }

最后,您应该在您的视图或 _Layout.cshtml

中包含以下脚本
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

更详细的文章请查看 this one here