Validation ASP.NET Core 2.0中的字段验证
我在POST请求的主体中得到一个JSON字符串,如下所示:Validation ASP.NET Core 2.0中的字段验证,validation,asp.net-core,request,asp.net-core-2.0,Validation,Asp.net Core,Request,Asp.net Core 2.0,我在POST请求的主体中得到一个JSON字符串,如下所示: { "payload": { "email": "example@test.com", "password": "example" } } 我的问题是,如何验证ASP.NET Core 2.0中的电子邮件和密码字段?首先,创建具有数据注释验证属性的模型。有许多现成的验证属性,您也可以创建自己的属性 公共类请求 { [必需] 公共SomeRequestPayload有效负载{get;set;} } 公共类有效负载
{
"payload": {
"email": "example@test.com",
"password": "example"
}
}
我的问题是,如何验证ASP.NET Core 2.0中的电子邮件和密码字段?首先,创建具有数据注释验证属性的模型。有许多现成的验证属性,您也可以创建自己的属性
公共类请求
{
[必需]
公共SomeRequestPayload有效负载{get;set;}
}
公共类有效负载
{
[RegularExpression(“某些正则表达式”,ErrorMessage=“无效电子邮件”)]
[必需]
公共字符串电子邮件{get;set;}
[RegularExpression(“某些正则表达式”,ErrorMessage=“无效密码”)]
[必需]
公共字符串密码{get;set;}
}
然后检查控制器操作中的ModelState
。当MVC将请求主体绑定到方法参数时,它将验证模型并保留ModelState
中的任何错误
[HttpPost(“”)
公共异步任务PostPayload([FromBody]SomeRequest-SomeRequest)
{
//检查是否有人送出尸体
if(someRequest==null)
返回此.BadRequest(“空”);
//检查主体是否有任何错误
如果(!this.ModelState.IsValid)
返回此.BadRequest(此.ModelState);
//请在此插入
返回这个.Created(“someLocation”,someModel);
}
验证这些字段的方法很多。我更喜欢使用FluentValidation
库和附加的包FluentValidation.AspNetCore
,它将验证集成到ASP.NET核心管道中
使用这种方法有很多好处
简单地说,您应该执行以下几个步骤:
dotnet添加包FluentValidation.AspNetCore
public class AuthViewModelValidator : AbstractValidator<AuthViewModel>
{
public AuthViewModelValidator()
{
RuleFor(reg => reg.Email).NotEmpty().EmailAddress();
RuleFor(reg => reg.Password).NotEmpty();
}
}
最后对模型进行了验证
[HttpPost]
public IActionResult FormValidation(AuthViewModel model)
{
if (this.ModelState.IsValid) {
ViewBag.SuccessMessage = "Great!";
}
return View();
}
有很多方法可以进行验证。A你试过什么?我试过ASP的内置功能,包括注释和modelstate。但是我不知道是应该为每个请求创建一个请求类,还是为一个请求创建一个类。请求模型的数量取决于您的实体结构。如果你想有一些可重用性,你可以从基类继承属性。你需要给我们更多的细节。您想要什么样的验证?您想要服务器端验证还是客户端验证(或两者都要)?到目前为止你试过什么?什么有效,什么无效?这是我的错,我需要服务器端验证。我在后端使用C#。我的问题是,我不确定创建多个请求类是否好。
[HttpPost]
public IActionResult FormValidation(AuthViewModel model)
{
if (this.ModelState.IsValid) {
ViewBag.SuccessMessage = "Great!";
}
return View();
}