0

最近我一直在研究一个相当复杂的 UI,在其中我不得不调整默认集合绑定以使用基于 1 的集合而不是基于 0 的集合,当使用 Html.InputFor() 时,最终输入如下:

 <input name="Model.Collection[1].Options.SomeOption" id="Model_Collection_1__Options_SomeOption" />
 <input name="Model.Collection[2].Options.SomeOption" id="Model_Collection_2__Options_SomeOption" />

最初,这不适用于 MVC 的模型绑定器默认工作的方式,但我遇到了 Phil Haack 的这篇文章,详细介绍了如何使用模型绑定器绑定到集合的任何内容。http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/ 这使我在 UI 中所做的事情变得微不足道,但是现在当我尝试使用流利的验证进行验证时fluent 验证返回(正确)错误消息的名称是 index - 1。例如,如果在上面的示例中 Option1 是必需的并且我将其留空,则 fluent 验证返回名称:

 Model.Collection[0].Options.SomeOption

我正在使用以下流畅的验证代码验证我的收藏:

RuleFor(x => x.Collection).SetCollectionValidator(new OptionValidator());

我想知道的是,如果我搞砸了并且必须重写 UI,或者是否有某种方法可以强制 fluentvalidation 给我的名称与 UI 中的名称相匹配。我正在使用 fluentvalidation 6.4 版

PS 我已经对此感到沮丧一段时间了,所以如果问题不是非常清楚或需要更多信息,请原谅我,如果需要,我可以编辑问题以获得更多上下文。

4

0 回答 0