加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.net MVC中的流畅验证 – 数据库验证

发布时间:2020-12-16 09:35:51 所属栏目:asp.Net 来源:网络整理
导读:我正在ASP.net MVC 3项目中使用Fluent Validation框架.到目前为止,我的所有验证都非常简单(确保字符串不为空,只有一定长度等),但现在我需要验证数据库中是否存在某些内容. 在这种情况下应该使用流利验证吗? 如果应使用Fluent Validation完成数据库验证,那么
我正在ASP.net MVC 3项目中使用Fluent Validation框架.到目前为止,我的所有验证都非常简单(确保字符串不为空,只有一定长度等),但现在我需要验证数据库中是否存在某些内容.

>在这种情况下应该使用流利验证吗?
>如果应使用Fluent Validation完成数据库验证,那么如何处理依赖项?验证器类是自动创建的,我需要以某种方式将其传递给我的一个存储库实例,以便查询我的数据库.

我正在尝试验证的一个例子可能是:

我的页面上有一个下拉列表,其中包含所选项目的列表.我想在尝试保存新记录之前验证他们选择的项目是否实际存在于数据库中.

编辑
以下是Fluent Validation框架中常规验证的代码示例:

[Validator(typeof(CreateProductViewModelValidator))]
public class CreateProductViewModel
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

public class CreateProductViewModelValidator : AbstractValidator<CreateProductViewModel>
{
    public CreateProductViewModelValidator()
    {
        RuleFor(m => m.Name).NotEmpty();
    }
}

控制器:

public ActionResult Create(CreateProductViewModel model)
{
    if(!ModelState.IsValid)
    {
        return View(model);
    }

    var product = new Product { Name = model.Name,Price = model.Price };
    repository.AddProduct(product);

    return RedirectToAction("Index");
}

如您所见,我自己从不创建验证器.这是因为Global.asax中的以下行:

FluentValidation.Mvc.FluentValidationModelValidatorProvider.Configure();

问题是,现在我有一个验证器,需要使用存储库与我的数据库进行交互,但由于我没有创建验证器,我不知道如何传递依赖关系,除了硬编码具体类型.

解决方法

此 link可帮助您实现所需内容,而无需手动实例化和手动验证模型.此链接直接来自FluentValidation论坛.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读