请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

大家好,为什么我的过滤验证没有效果?

@阿莱克斯刘,帮瞅眼?
图片描述
图片描述
图片描述
我传入的CardNum为空,他依然是由数据库报出来的错。

正在回答 回答被采纳积分+3

2回答

慕田峪0356378 2020-10-04 13:24:10

“我传入的CardNum为空,他依然是由数据库报出来的错”

好像没错啊。

我感觉这里已经不是由数据库报出来的错, 因为你已经在MemberCardCreationForDto class 的属性上加的验证, 不是在model class 的属性上验证的。

建议你去掉model class 的属性上验证(CardNum)【Required(。。。。】试试。

1 回复 有任何疑惑可以回复我~
  • 提问者 慕村8337265 #1
    目前是数据库报出来的,也就是说,我的DTO验证没有生效,我是想知道为什么DTO没有验证数据。
    回复 有任何疑惑可以回复我~ 2020-10-09 21:01:54
  • model或者dto的验证需要使用model state,课程中有详细讲解这个部分。而你现在使用的maxlength等属性是直接作用于数据库的,换句话来说是在创建数据库的时候给数据库加限制。这个限制是数据库级别的,而不是程序级别的,所以报错来自数据库
    回复 有任何疑惑可以回复我~ 2020-10-10 00:44:23
慕田峪0356378 2020-10-04 13:10:55

我感觉你应该return的是为UI工作的DTO class instance, 不是model class instance

请试一下

if(userRespository.Save())

{

var memberCardToReturn = _mapper.Map<MemberCardDto>(card);

return CreatedAtRoute("GetMemberCardById", new {userId, cardId = memberCardToReturn.Id}, memberCardToReturn);

}


1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信