我有一个适用于所有方面的视图模型ApplicantProfileModel
。它声明了一个属性
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
并且此属性出现在像
这样的局部视图中@model Comair.RI.UI.Models.ApplicantProfileModel
@Html.ValidationSummary(true)
<fieldset>
<legend></legend>
<ul class="form-column">
@Html.HiddenFor(m => m.Id)
.....
我对此属性有以下Fluent验证规则:
RuleFor(p => p.Id).NotEmpty().WithMessage("Id is empty. Messsage may have been tampered with.");
值为零的int
肯定不是“空”。我知道我可以将规则更改为不等于零,但这并不能解决我的问题并回答我的问题,为什么int
的值0
被流畅的验证视为空?
答案 0 :(得分:1)
因为int
是值类型而且不能有值。我会根据FluentValidation
对default
检查该类型,我认为int
为0。如果你可以使Id
成为可以为空的int,那么你可以获得这种行为。否则我会按你的建议做,并检查不等于0.