我正在编写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();
}
}
答案 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();
}