3

我正在使用 ServiceStack(带有新的 API)并尝试验证 DTO。刚刚创建了一些简单的代码来模拟验证,但它显然没有触发,或者至少它没有按预期显示响应中的错误。我的代码如下:

DTO:

[Route("/users/login")]
public class UserLogin
{
    public string Email { get; set; }
    public string Password { get; set; }
}

验证器本身:

public class UserLoginValidator : AbstractValidator<UserLogin>
{
    public UserLoginValidator()
    {
        RuleSet(ApplyTo.Get, () =>
        {
            RuleFor(x => x.Email).NotEmpty().WithMessage("Please enter your e-mail.");
            RuleFor(x => x.Email).EmailAddress().WithMessage("Invalid e-mail.");
            RuleFor(x => x.Password).NotEmpty().WithMessage("Please enter your password.");
        });
    }
}

在主机中配置验证:

Plugins.Add(new ValidationFeature());
container.RegisterValidators(typeof(UserLoginValidator).Assembly);

和服务:

public class LoginService : Service
{   
    public object Get(UserLogin request)
    {
        var response = new { SessionId = Guid.NewGuid() };
        return response;
    }
}

是否需要进行任何其他配置或调整才能使其正常工作?

谢谢!

4

1 回答 1

2

文档

注意:响应 DTO 必须遵循 {Request DTO}Response 命名约定,并且必须与请求 DTO 位于相同的命名空间中!

尝试为响应创建一个类

public class UserLoginResponse
{
    public UserLogin Result { get; set; }
}

并归还

public class LoginService : Service
{   
    public object Get(UserLogin request)
    {
        var response = new UserLoginResponse { Result = request };
        return response;
    }
}
于 2012-12-14T13:50:56.367 回答