2014-09-01 95 views
0

我正在編寫一個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

看起來沒問題,你看到了什麼錯誤? – 2014-09-01 08:32:12

回答

0

當然不是。如果只有一個條件是正確的,第一個會通過。但是第二個會檢查兩個條件以便執行該操作。 第二個等於:

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

不,這不會實現一樣的東西。

你與邏輯或者說第一條語句「如果這一條件得到滿足或者其他滿足:{...}」

你的第二個聲明說,「如果條件滿足這一條件得到滿足{。 ..}「,它可以被翻譯爲:

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

所以你的問題的答案是:不,他們沒有達到同樣的目的。如果你想有一個HttpNotFoundException待提高,如果這兩個條件都滿足你有你的鏈條與邏輯和條件(& &)

//編輯:挑剔的開始之前。是的,我知道,這個訂單在他的第二個代碼片段中是相關的,但爲了解決問題,我選擇忽略它。

相關問題