C# - 多个过滤条件

年龄

我有以下代码

if (!UserIsInRole("Owners"))
    RegisterControlRule("CreatorID", AccessPermission.Allow, UserId);

请注意代码正在被过滤CreatorID,这在我的情况下有效。

现在我想添加另一个参数 delegeatedToId

我已经尝试了以下

if (!UserIsInRole("Owners"))
    This is skipped >>> RegisterControlRule("CreatorID", AccessPermission.Allow, UserId);
    This will runs  >>> RegisterControlRule("delegeatedToId", AccessPermission.Allow, UserId);

但只考虑第二个过滤器。

我也尝试了以下(只是一个愚蠢的想法)

RegisterControlRule("CreatorID","delegeatedToId", AccessPermission.Allow, UserId);

附加信息:

伙计们,这是包装

protected override void EnumerateAccessControlRules(string controllerName)
{
    base.EnumerateAccessControlRules(controllerName); 
    if (!UserIsInRole("Administrators"))
    {
        RegisterControlRule("InstanceID", AccessPermission.Allow, OrganizationID);
        RegisterControlRule("RoleID", AccessPermission.Deny, 1);

        // let's filter by created by if user is not the owner //CreatedBy
        if (!UserIsInRole("Owners"))
            RegisterControlRule("CreatorID", AccessPermission.Allow, UserId);

       //Second filter 
            RegisterControlRule("delegeatedToId", AccessPermission.Allow, UserId);
    }
}

谢谢你的时间!

图书

在 中C#if语句可以带有或不带有花括号,但有区别。

if(a == b)
    a++;
    b++;

在上面,a++仅当条件为真时b++才会发生,而无论如何都会发生,因为如果条件为 ,则只有紧随其后的行才被if认为是要做的事情true

另一方面,使用花括号可以消除混乱并使事情变得清晰。

if(a == b)
{
    a++;
}
b++;

这段代码等同于上面的代码,但没有那么模糊。

在您的情况下,无论if条件的结果如何,都会发生第二个寄存器,因此我敢打赌,在您的条件为 的情况下,第二个寄存器会覆盖第一个寄存器true

编辑

即使在您编辑过的帖子之后,仍然不清楚您的预期行为是什么。if条件评估为true(即,如果用户不在角色“所有者”中),您希望两个“注册”操作都发生,还是只发生第一个?

如果您希望条件为真时两个寄存器都发生,请像这样使用它:

if (!UserIsInRole("Owners"))
{
    RegisterControlRule("CreatorID", AccessPermission.Allow, UserId);
    RegisterControlRule("delegeatedToId", AccessPermission.Allow, UserId);
}

如果您只希望第一个发生,就像这样,但请记住,在这种情况下,无论if条件的结果如何,第二个都会发生

if (!UserIsInRole("Owners"))
{
    RegisterControlRule("CreatorID", AccessPermission.Allow, UserId);
}
RegisterControlRule("delegeatedToId", AccessPermission.Allow, UserId);

你也没有告诉我们这RegisterControlRule是什么或它的行为是什么。检查图书馆的文档,看看注册一个规则是否会覆盖以前的规则。在这种情况下,在上述任一示例中,只有最后一条规则将保持注册状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章