aspnetboilerplate自定义验证引发异常

时间:2019-03-20 10:26:10

标签: c# validation asp.net-core aspnetboilerplate

我在.Net Core项目中使用aspnetboilerplate框架。我在official documentation之后对视图模型进行了自定义验证。

首先,我有一个带有自定义验证的简单视图模型:

public String get_value(long nodeid,String ts) {
    try {
        String sql="Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";
        if (em == null) {
            throw new Exception("could not found URL object.");
        }
        em.createNativeQuery(sql).getSingleResult();

        return (String)em.createNativeQuery(sql).getSingleResult();

      //  return 1;

    } catch (Exception e) {
        e.printStackTrace();



    }
  return null;
}

然后我的控制器是这样的:

    public class EditPropertyViewModel : ICustomValidate
    {
        public long Id { get; set; }

        public long? ParentId { get; set; }

        public string Title { get; set; }

        public void AddValidationErrors(CustomValidationContext context)
        {
            if (Id == ParentId)
                context.Results.Add(new ValidationResult("Property cannot be parent of itself!", new [] { "ParentId" } ));
        }    
    }

但是当我运行项目时,会发生此异常:

  

AbpValidationException:方法参数无效!有关详细信息,请参见ValidationErrors。

这意味着我的自定义验证已在ModelState.IsValid之前执行,并且没有机会处理该异常并向用户显示用户友好的消息。通过[DisableValidation]禁用验证会跳过此异常,但我的验证逻辑也会被跳过。我还尝试使用.NET的标准IValidatableObject接口代替abp的ICustomValidate,但这没有帮助我解决问题。

0 个答案:

没有答案