gpt4 book ai didi

asp.net-mvc - FluentValidation 将参数传递给 WithMessage

转载 作者:行者123 更新时间:2023-12-03 13:32:47 26 4
gpt4 key购买 nike

我在验证器中有以下代码:

RuleFor(mb => mb.Amount).
Must((mb, amount) =>
{
var betLimit = _battlesService.GetBetLimit(mb.BattleId);

mb.Amount <= betLimit;
}).
WithMessage("Bet should be less than {0}", "bet limit value should be placed here");

有没有办法将 betLimit 值传递给 WithMessage 方法?我看到的唯一解决方案是将 betLimit 值设置为 ViewModel 的某些属性,然后使用 funcs 在 WithMessage 重载中访问它。但它很丑。

最佳答案

Amount不用于获取betLimit ,当你的验证器启动时,你不能把下注限制拉到一个字段中,并在任何你想要的地方使用它吗?就像是:

public ViewModelValidator(IBattlesService battlesService)
{
var betLimit = battlesService.GetBetLimit();

RuleFor(mb => mb.Amount).
Must((mb, amount) =>
{
mb.Amount <= betLimit;
}).
WithMessage(string.Format("Bet should be less than {0}", "bet limit value should be placed here", betLimit));
...
}

更新:

我现在看到您从 View 模型中添加了参数。基于 FluentValidation 文档 here 中的第三个示例,您似乎应该能够像这样获得它:
    public ViewModelValidator(IBattlesService battlesService)
{
RuleFor(mb => mb.Amount).
Must((mb, amount) =>
{
mb.Amount <= betLimit;
}).
WithMessage("Bet should be less than {0}", mb => battlesService.GetBetLimit(mb.BattleId));
...
}

关于asp.net-mvc - FluentValidation 将参数传递给 WithMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com