【问题标题】:Model Fluent validation模型流利验证
【发布时间】:2019-05-16 10:13:16
【问题描述】:

我有一个带有项目列表的模型,并且我有一个 Property OrderQty 规则,它必须是一个数字(即 0-9)。如果规则失败,它应该从对象列表中返回带有 ItemNo 的消息。

RuleFor(m => new { m.OrderQty, m.ItemNumber }).Must(x => validateint(x.OrderQty, x.ItemNumber)).WithMessage(string.Format(Item {0} Must be an integer",x.ItemNumber));

我的 Items 类是这样的

public class Item
{
    public string ItemNumber { get; set; }
    public string Description { get; set; }
    public string OrderQty{ get; set; }
    public string Status { get; set; }
}

我预计输出应该是 ErrorMessage,因为“Item 'Itemnumberhere' must be an integer”

【问题讨论】:

  • 目前的实际输出是多少?请同时提供 validateint 函数代码。只是伪代码就可以了。
  • 到目前为止,我收到编译时错误,因为名称'x'在当前上下文中不存在并且我的 validateint 函数是 public bool validateint(string value,string Item) { int number; bool a = int.TryParse(value, out number);返回一个; OrderQty 属性是一个字符串,所以我在这里使用这个函数
  • 添加了答案。看看并告诉我

标签: c# .net asp.net-web-api2 fluentvalidation


【解决方案1】:
RuleFor(m => new { m.OrderQty, m.ItemNumber }).Must(x => validateint(x.OrderQty, x.ItemNumber)).WithMessage(x => $"Item {x.ItemNumber} Must be an integer"))

RuleFor(m => new { m.OrderQty, m.ItemNumber }).Must(x => validateint(x.OrderQty, x.ItemNumber)).WithMessage(x => string.Format("Item {0} Must be an integer",x.ItemNumber))

 RuleFor(m => m).NotEmpty().WithMessage(x => { return string.Format("Item {0} Must be an integer", x.ReportName); });

你应该得到你需要的格式。

使用 string.format 和 $ 使用相同的功能。使用 $ 方法使代码更具可读性。只是一个提示

【讨论】:

  • 我也试过了,但我仍然收到编译时错误,例如意外字符“$”和无效表达式术语“
  • 我相信你必须使用旧版本的 c#/visual studio。 c#5 及以上版本只有 $.使用 string.format 尝试第二个
  • @Vicky 带有$的格式字符串仅在C# 6 或更高版本中有效
  • @Vicky 修改了答案以适合您的 c# 版本。看看吧。
  • 是的,我使用的是 C# 5.0,我尝试了这个 x => string.Format("Item {0} Must be an integer",x.ItemNumber) 但仍然出现编译时错误。无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型 Delegate 'System.Func' 不接受 1 个参数 'ABC.MODELS.ViewModels.Item ' 不包含对 'ItemNumber' 的定义,并且找不到接受类型为 'ABC.MODELS.ViewModels.Item' 的第一个参数的扩展方法 'ItemNumber'(您是否缺少 using 指令或程序集引用?)跨度>
猜你喜欢
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 2019-07-13
相关资源
最近更新 更多