服务堆栈验证

时间:2012-11-12 18:44:13

标签: servicestack

我有一个模特

[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。

1 个答案:

答案 0 :(得分:1)

我刚刚committed a fix for this所以你现在不应该再在HEAD中使用下一版本的ServiceStack(或者本周末在NuGet上)出现此错误。

新行为是任何Exception将填充Razor View上的ModelError属性。 @Model将为null,但您可以通过查看View页面上的base.ResponseStatus属性来访问键入的错误。