C# 使用预期的字符串列表验证模型

问题描述

我正在尝试验证模型中的字段,该字段应包含列表中的选项之一。 我可以通过普通方法做到这一点,但我最好使用 ValidationAttribute 以便它可以在 ModelState.IsValid 上运行。

例如,客户端可以发送以下项目之一:

"00","01","02","03"

在我的服务器端,我们在下拉列表中记录了以下项目:

return Dropdown[] {
    new Dropdown() 
    {
        Title = "a value",Value = "00"
    },new Dropdown()
    {
        Title = "another value",Value = "01"
    }
    ...
}

那么作为一个例子,我们收到的模型可能是:

public class MyData 
{
    [Exists]
    public string Selected { get; set; }
}

我想要实现的是获取预期下拉项的列表,仅从对象中选择“值”,并检查“已选择”字段中是否存在这些值之一。

以下不起作用,C# 不会让我将 Dropdown[] 传递到验证类中。 同样,我无法传入在运行时计算的 string[]。

public sealed class ExistsAttribute : ValidationAttribute
{
    private readonly string[] AllowedValues;
    public ExistsAttribute(Dropdown[] allowedValues)
    {
        AllowedValues = allowedValues.Select(c => c.Value).ToArray();
    }

    public override bool IsValid(object value)
    {
        string converted = value.ToString();
        if (!string.IsNullOrWhiteSpace(converted))
        {
            if (AllowedValues.Contains(converted))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return true;
        }
    }
}

有人知道如何实现这样的目标吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...