2013-07-16 26 views
0

老實說,我已經找了很長一段時間,我什至不能找到我正在尋找的一般格式,但我有以下剃刀語法,我不知道它的含義。有人可以請我在剃刀中解釋這個語法嗎?

<option value="@value" @(Model.Amount == value ? "selected" : "") >[email protected]</option> 

如果可能,我想對該行代碼進行解釋。具體來說,爲什麼我沒有 option value =「@ Model.Amount」或類似的東西? 我也不理解Razor語法是如何在Model.Amount ==值後面出現的。

'?'是什麼?指示 以及兩個值「selected」:「」)

如果有人能夠徹底地向我解釋這我真的很感激。

感謝

+2

@(Model.Amount == value?「selected」:「」)'的作用是檢查選項值是否等於Model.Amount,如果相等,則會添加一個「selected」屬性添加到選項標籤。但是, 這是創建下拉列表的不好方法。你應該使用'Html.DropDownListFor'。 – ataravati

回答

2

(condition) ? (if true) : (else)是C#conditional operator,不只是剃刀。

它寫出<option value="xxx" ... "selected">如果@value等於Model.Amount,即選擇它在HTML中。

它相當於速記

if (Model.Amount == value) 
{ 
    <%: "Selected" %> 
} 
else 
{ 
    <%: "" %> 
} 
+0

嘿斯圖亞特,感謝您的答案,現在如果我有一個文本框,這將是適當的語法將其傳遞迴我的控制器呢? \t \t \t \t user2094139

+0

是的,這將插入'@ Model.AutoReloadThreshold'入值輸入的屬性。試試看:) – StuartLC

+0

嗯,也許我做錯了什麼,但是當我有這個時,文本框中的值不會發送到我的模型中的後期方法。 – user2094139

1
value="@value" 

這是設置選項的值

@(Model.Amount == value ? "selected" : "") 

這是速記布爾邏輯,或IF/THEN

以上是在概念上與此相同:

if (Model.Amount == value) 
{ 
    return "selected"; 
} 
else 
{ 
    return ""; 
} 

視圖的模型上有一個名爲Amount的屬性,這是一個布爾值,用於確定選項是否是select中的選定值。

相關問題