2017-04-03 39 views
1

我已經做了這個功能。我正在使用Razor和C#。如果訂單有以下號碼之一的供應商ID,我要打印出屬於關聯的供應商ID文本:從if語句打印出包含id的文字

@{ 
    var pointShop = Model.Order.OrderLines[0]; 
    string supplier == null; 

    if (pointShop.SupplierId = 27942) { 
    supplier = "If any question, please contact us"; 
    } 
    else if (pointShop.SupplierId = 6543) { 
    supplier = "Please call us"; 
    } 
    else if (pointShop.SupplierId = 8723) { 
    supplier = "You are welcome to write us"; 
    } 
} 

我打印出這樣的供應商:

<span> 
    @supplier 
</span> 

有100%我的訂單中有一個ID是27942.但我沒有收到文本printet。只是一個空的領域。有什麼我在這裏做錯了嗎?

+0

這應該是ASP.NET/Razor模板嗎? – UnholySheep

+1

'@ supplier'就是你需要的 – haim770

+1

確保你的if/elses使用的是賦值'='而不是比較'=​​=',否則你會想知道那裏發生了什麼。你可能需要做'string supplier = string.Empty',目前你正在比較它而不是聲明它。 – Bardicer

回答

1

你錯過了使用===,因爲其他人也沒有了。

@{ 
    var pointShop = Model.Order.OrderLines[0]; 
    string supplier == null; 

    if (pointShop.SupplierId = 27942) { 
    supplier = "If any question, please contact us"; 
    } 
    else if (pointShop.SupplierId = 6543) { 
    supplier == "Please call us"; 
    } 
    else if (pointShop.SupplierId = 8723) { 
    supplier == "You are welcome to write us"; 
    } 
} 

讓我們一行一行。

string supplier == null; 

這不應該編譯,所以我不確定你實際運行的是什麼。我想你打算創建一個空字符串varible,做正確的方法是這樣的:

string supplier = String.Empty; 

var supplier = String.Empty;

然後在您的平等檢查在你的if語句,你正在做不分配評價。 =是賦值==是評估。

if語句pointShop.SupplierId將被分配,而不是evaulating的供應商ID,並檢查它的反對27942.值的27942值需要

if (pointShop.SupplierId == 27942) { 
    supplier = "If any question, please contact us"; 
    } 

代替。

所有這些都可以在調試器中通過在剃刀視圖中放置斷點並進入它來檢查。祝你好運!

0

如果你有一堆,如果所有檢查相同的價值,交換機......案件可能是更乾淨的解決方案。下一步將是一個數組或Dictionary<int, string>

你必須在您使用的比較操作,而不是賦值運算符的地方:

supplier == "Please call us"; 

這將永遠是假的,因爲空不等於任何字符串。但這將是一個錯誤;這種編譯器沒有任何意義。