首页 > 解决方案 > 如何使用数据库中的现有数据验证表单中输入的数据

问题描述

如何将表格中输入的数据与数据库中的数据进行比较?

我在此表中有 InternalContacts 表我有两个字段 ProductCodeFrom 和 ProductCodeTo 将产品与内部联系人关联,在创建新记录时我想验证新范围是否与现有范围不重叠

我有这个代码来获取所有联系人

var getallinternalContacts = await InternalContactsService.GetInternalContacts();

我认为这两个领域

 <div class="col-sm-6">
     <h5>Product Code From</h5>
     <input asp-for="ProductCodeFrom " type="text" class="form-control w-75" id="ProductCodeFrom " maxlength="50" />        
 </div>
 <div class="col-sm-6">
    <h5>"Product Code Thru"</h5>
     <input asp-for="ProductCodeTo" type="text" class="form-control w-75" id="ProductCodeTo" maxlength="50" />
 </div>

在我用来ModelState验证其他人的动作类中,如下所示,我想添加上面的验证验证

if (!ModelState.IsValid || (internalContactToCreate.ProductCodeRangeFrom > internalContactToCreate.ProductCodeRangeThru))
            {
                if (internalContactToCreate.ProductCodeRangeFrom > internalContactToCreate.ProductCodeRangeThru)
                    ModelState.AddModelError("ProductCodeRangeFrom", "From must be less than To value.");
                return View();
            }

标签: asp.netasp.net-mvcasp.net-core

解决方案


您可以考虑使用FluentValidation来验证您的绑定模型。

假设你有一个ProductCodeBindingModel

public ProductCodeBindingModel
{
  public int ProductCodeFrom { get; set; }
  public int ProductCodeTo { get; set; }
}

然后,创建一个验证器并将LessThan规则添加到ProductCodeTo

public class ProductCodeBindingModelValidator : AbstractValidator<ProductCodeBindingModel>
{
  public ProductCodeBindingModelValidator() {
    // Make sure that ProductCodeFrom < ProductCodeTo
    RuleFor(x => x.ProductCodeFrom)
      .LessThan(x => x.ProductCodeTo);
      .WithMessage('From must be less than To value.');
  }
}

您可以在此处查看有关该LessThan规则的更多信息。


推荐阅读