2015-09-18 47 views
-1

我通常使用三元運算符來創建非常簡單的條件,特別是在HTML屬性中。例如:如何使用剃刀語法在asp.net中使用多個三元運算符

<fieldset id="Employee" style="@(Model.Type == "Employee" ? "" : "display: none")" > 

但我希望有多個三元運算符是這樣的,但下面不工作:

<fieldset id="multi" 
    style="@(Model.Type == "W2" || 
      Model.Type == "1099" ? "" : "display: none")" > 
+0

你顯示的作品很好。你有什麼問題? –

回答

0

您可以使用Html.Raw。

<fieldset d="multi" 
    style="@Html.Raw(Model.Type == "W2" || 
      Model.Type == "1099" ? "" : "display: none")" > 
0

我寧願把這樣的邏輯在我看來,通過引進新物業的模式,例如ShowMulti,讓我的觀點很簡單:

<fieldset id="multi" style='@(Model.ShowMulti ? "" : "display: none")' > 

在視圖模型側財產會是什麼樣子這樣的:

public bool ShowMulti { get { return Type == "W2" || Type == "1099" } } 

作爲替代你也可以引入CSS類名爲hide

.hide { 
    display: none; 
} 

,只是在你的視圖的開頭實現邏輯:

@{ 
    var showMulti = Model.Type == "W2" || Model.Type == "1099" ? "" : "hide"; 
} 

,並在您的標籤:

<fieldset id="multi" class="@showMulti" > 

但這種做法通常取決於您的視圖的大小。

+0

錯誤:無法將類型'字符串'轉換爲'布爾'在這裏>>'style ='@(Model.ShowMulti?「」:「display:none」)'' –

+0

我提出了兩種方法。在第一個 - 你的表達式的返回類型是bool(是否顯示該塊),在第二個 - 結果類型是具有類的名稱的字符串。我認爲這是合乎邏輯的,因爲類的名稱可能會改變,您可以在不重建您的mvc項目的情況下進行更改。 –

+0

我已經在第一個案例的視圖模型中添加了屬性示例,以便讓您更清楚。 –