【问题标题】:fluent validation validating a list of generated text boxes流利的验证验证生成的文本框列表
【发布时间】:2014-05-20 22:30:49
【问题描述】:

我的表单上有一组文本框,它们是在 foeach 中生成的,如下所示:

查看:

@for (int i = 0; i < Model.TransomeList.Count; i++)
                        {
                            ItemDrops tranItem = Model.TransomeList.ElementAt(i);
                            <div class="form-group">
                                @Html.Label(tranItem.ItemName.ToString(), new { @class = "col-sm-6 control-label" })

                                <div class="col-sm-6">
                                    @Html.TextBoxFor(x => x.TransomeList[i].ItemPossInfo, new { @class = "form-control" })
                                    @Html.HiddenFor(x => x.TransomeList[i].ItemName)
                                </div>
                            </div>                                
                        }

我正在使用流利的验证,并希望确保每个文本框都是必需的(最好在错误消息中说明哪个文本框)

在我的验证器类中,我有:

RuleFor(x => x.TransomeList).SetCollectionValidator(new TransDropValidator());

与:

 public class TransDropValidator : AbstractValidator<ItemDrops>
{
    public TransDropValidator()
    {
        RuleFor(x => x.ItemPossInfo)
            .NotNull().WithMessage("Transom position required{O}", x => x.ItemPossInfo);
    }
}

但是这并不能验证任何东西...我需要做什么?

谢谢

【问题讨论】:

  • 您是其他流利的验证器验证器正在工作还是只有这一个?您是否按照此处所述正确设置了 MVC 集成:fluentvalidation.codeplex.com/wikipage?title=mvc?因为您的代码应该可以正常工作(至少是服务器端验证部分,因为SetCollectionValidator 不支持客户端验证......)
  • @nemesv 其他验证工作,但这对我不起作用

标签: asp.net-mvc validation fluentvalidation


【解决方案1】:

你还需要

@Html.ValidationMessageFor()

我假设您正在进行服务器端验证。如果没有,那么您的验证器需要进一步工作,并且您需要生成 JavaScript 组件。

【讨论】:

  • 我只是希望它出现在验证摘要中并突出显示文本框
  • 好的,现在我知道问题出在哪里了。我解决了类似的问题,但需要查找。您打算使用服务器端还是客户端验证。
  • 理想情况下两者都有,但服务器现在就足够了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2021-09-16
相关资源
最近更新 更多