是否可以检查集合是否包含字段值?
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
鉴于下面的简化模型,我想编写一个规则 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