是否可以检查集合是否包含字段值?

Is it possible to check if collection contains field value?

鉴于下面的简化模型,我想编写一个规则 MyCollection contains MyField,但我得到的只是 select 的数据源项列表,就好像集合的 ValueInputType 仅适用于用户。我应该在模型中更改什么以实现该目标?

public class MyModel
{
    [Field(Settable = false, DataSourceName = "MyDataSource")]
    public int MyField { get; set; }

    [Field(Settable = false, ValueInputType = ValueInputType.All, DataSourceName = "MyDataSource"))]
    public List<int> MyCollection { get; set; }
}

根据文档 here,数字 value-typed collections 只能使用 ValueInputType.User(查找 "IMPORTANT!" headers 之一文章中间)。因此,您不能在规则条件中使用 MyField 字段的值。您需要创建一个 in-rule 方法来实现:

public bool Contains(List<int> collection, [Parameter(DataSourceName = "MyDataSource")] int i)
{
    return collection.Contains(i);
}

有了这样的 in-rule 方法,您的规则可能如下所示:

Check if Contains(MyCollection, OneOfTheMembersOfMyDataSource) is True