问题描述
我正在尝试验证模型中的字段,该字段应包含列表中的选项之一。 我可以通过普通方法做到这一点,但我最好使用 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 (将#修改为@)