服务堆栈验证
我有一个模型
[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
属性来访问类型错误。