检查对象中的两个属性

时间:2014-09-01 08:21:40

标签: c# equals actionresult

我正在编写C#MVC5 Internet应用程序,并对检查对象属性有疑问。

我从DbSet中检索Asset对象,我想检查以确保Asset具有当前用户的userName或DefaultMapMarker类别。如果这些都不是真的,我希望显示一个HttpNotFound页面。

以下代码是否正确?

if (!asset.category.Equals("DefaultMapMarker" || asset.userName != User.Identity.GetUserName()))
{
    return HttpNotFound();
}

提前致谢

修改

我想问一下上面的代码是否与下面的代码相同:

if (!asset.category.Equals("DefaultMapMarker"))
{
    if (asset.userName != User.Identity.GetUserName())
    {
        return HttpNotFound();
    }
}

2 个答案:

答案 0 :(得分:0)

不,这不会达到同样的目的。

您对逻辑的第一个陈述或说"如果满足此条件或满足另一个条件:{...}"

你的第二个陈述说"如果满足条件且满足这个条件{...}",可以将其翻译成:

if (!asset.category.Equals("DefaultMapMarker" && asset.userName != User.Identity.GetUserName()))
{
    return HttpNotFound();
}

所以你的问题的答案是:不,他们没有达到同样的目的。如果您希望在满足这两个条件时引发HttpNotFoundException,则必须使用逻辑AND(&&)

来链接您的条件

//编辑:在挑剔开始之前。是的我知道,订单与他的第二个代码片段相关,但我选择忽略它以解决问题。

答案 1 :(得分:0)

当然不是。如果只有一个条件是正确的,则第一个将通过。但第二个将检查两个条件,以超越行动。 第二个等于:

if (!asset.category.Equals("DefaultMapMarker") && asset.userName != User.Identity.GetUserName()))
{
    return HttpNotFound();
}