服务堆栈验证

我有一个模型

[Validator(typeof(ContractValidator))]
[Route("/contracts", "POST")]
public class Contract
{
    public int ContractID{get; set;}
    public string ContractNumber{get;set;}
}

我也有上述模型的验证类。

public class ContractValidator : AbstractValidator<Contract>
{
    public ContractValidator()
    {
        RuleFor(x => x.ContractNumber).Length(0, 10);
    }
}

我也有一个类来映射'GET'请求:

[Route("/contracts/{ContractID}", "GET")]
public class GetContract
{
   public int ContractID { get; set; }
}

...和服务:

public class ContractService : ServiceStack.ServiceInterface.Service
{
    public object Get(GetContract request)
    {
        IContractRepository repository = new ContractRepository();
        return repository.GetById(request.ContractID);
    }

public object Post(Contract request)
    {
        IContractRepository repository = new ContractRepository();
        repository.Save(request);
        return request; 
    }

}

现在在我的Razor视图中编辑一个合同对象

@inherits ViewPage。 。 。

但问题是,当我尝试保存并出现模型验证错误时,出现以下错误:

无法投射“ServiceStack.ServiceInterface.ServiceModel.ErrorResponse”类型的对象以键入“DTO.Contract”

有人可以让我知道如何处理这个?

谢谢,

Ermias。


我刚刚为此提出了一个修复方案,因此您现在不应再在下一版本的ServiceStack中(或在本周末的NuGet上)得到此错误。

新的行为是任何异常都会在Razor视图中填充ModelError属性。 @Model将为null,但您可以通过查看View Page上的base.ResponseStatus属性来访问类型错误。

链接地址: http://www.djcxy.com/p/65507.html

上一篇: servicestack validation

下一篇: servicestack Razor view with request and response DTO