首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合框规则( ...reading a FluentValidation )

组合框规则( ...reading a FluentValidation )
EN

Stack Overflow用户
提问于 2011-12-16 04:39:06
回答 2查看 2.3K关注 0票数 1

使用MVC3的C# FluentValidation规则for ()检查组合是否有值的正确方法是什么?

我有一套3个组合框的出生日期

代码语言:javascript
复制
    @Html.DatePickerDropDowns(Html.FieldNameFor(x => x.DateOfBirthDay),
                              Html.FieldNameFor(x => x.DateOfBirthMonth),
                              Html.FieldNameFor(x => x.DateOfBirthYear),
                                 DateTime.Now.Year - 110,
                                 DateTime.Now.Year,
                                 Model.DateOfBirthDay,
                                 Model.DateOfBirthMonth,
                                 Model.DateOfBirthYear)

    @Html.ValidationMessageFor(model => model.DateOfBirthDay)
    @Html.ValidationMessageFor(model => model.DateOfBirthMonth)
    @Html.ValidationMessageFor(model => model.DateOfBirthYear)

每个组合显示“日”、“月”或“年”。

他们每个人都有自己的相关列表。

因此,我想检查用户是否选择了0..31中的一个值。

代码语言:javascript
复制
   RuleFor(x => x.DateOfBirthDay).NotEqual(0).WithMessage("Day is required");
   RuleFor(x => x.DateOfBirthMonth).NotEqual(0).WithMessage("Month is required");
   RuleFor(x => x.DateOfBirthYear).NotEqual(0).WithMessage("Year is required");

例如,DateOfBirthDay HTML输出组合如下所示:

代码语言:javascript
复制
  "0" - Day  
  "1" - 1  
  "2" - 2  
   ...till 31  

当我运行ModelState.IsValid时,它没有发现用户没有接触任何组合值的事实,将索引保留为"0“。

在进阶时谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-12-16 07:47:10

我不确定"DatePickerDropdowns“是什么,但是FluentValidation对这种情况有特殊的逻辑。使用.NotEmpty(),而不是将Day设置为0,将其保留为空。使用默认DropDownListFor,您可以将选项参数设置为"Day“,这将自动发生。

你写了DatePickerDropDowns帮助器吗?我不会以这种方式实现它。我会使用一个DateTime,然后创建一个为该类型创建3个下拉框的EditorTemplate (如果这是您唯一的DateTime,否则使用UIHint指定一个自定义模板)。

票数 3
EN

Stack Overflow用户

发布于 2011-12-16 05:00:09

//像这样的东西可以工作吗?我假设你正在寻找它是否等于"...“?

代码语言:javascript
复制
string somestring = new string('.',3);
this.RuleFor(x => x.MyComboList).Equals(somestring);

//或者

代码语言:javascript
复制
this.RuleFor(x => x.MyComboList).NotEqual(0).WithMessage("..."); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8526281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档