2012-10-29 59 views
4

如果滿足某個條件,我想爲我的div標記添加一個簡單的內聯樣式。將樣式添加到基於模型值的元素

我能夠成功地應用「禁用」類,但是我無法讓我的光標樣式顯示出來。

<div class="item @(item.AvailableTimeSlots == "0" ? "disabled" : "")" @(item.AvailableTimeSlots == "0" ? "style='cursor: default;'" : "")> 

任何指針?

+0

您正在爲'div'指定默認光標。你期望會發生什麼? –

+0

我期望它將該樣式聲明放入元素中,但事實並非如此。通過其他類,div是一個指針 - 我想禁用它並刪除指針屬性而不進入主類。 –

+0

好的,這就是我所要求的,因爲默認行爲會**是一個指針,而且我不確定是否檢查了源代碼以查看樣式屬性已添加。 –

回答

2

工作摘錄

<div class="item @("0" == "0" ? "disabled" : "")" @Html.Raw("0" == "0" ? "style='cursor: default;'" : "")> 

添加Html.Raw()固定問題對我來說。沒有它,你最終的東西,如:

<div class="item disabled" style=&#39;cursor: default;&#39;> 

我嘗試了一些不同的瀏覽器,並且每個檢查DOM時給出了不同的結果。 IE8破壞它; Chrome錯誤地重新制作了它; IE9似乎正確地使其格式良好。

幾點注意事項:

  • @詹姆斯的解決方案,消除內聯樣式是一個很好的一個。目前的代碼真的很難閱讀,而內聯樣式很少是一個好主意。
  • 它看起來像item.AvailableTimeSlots應該是一個整數,而不是一個字符串。
2

任何指針?

儘可能地避免內聯樣式總是最好的。我建議你將你的cursor代碼移到它自己的CSS類&純粹的工作,例如類。

CSS

.default { 
    cursor: default; 
} 
.disabled { 
    ... 
} 

查看

@{ 
    var itemCLass = @item.AvailableTimeSlots == "0" ? "disabled" : "default"; 
} 
<div class="item @itemClass" /> 
+0

如果仔細閱讀,風格不在'class'內。這只是非常令人困惑(同意你關於破解代碼的建議)。 –

+1

@TimMedora你的位置,我不得不看*真* *接近發現。謝謝 – James

+0

詹姆斯 - 正確的,類定義的作品。我添加了類似於上面詳述的內容,並且它運行良好。儘管我試圖弄清楚如何放入一個樣式屬性,但仍然不確定它爲什麼沒有放入。 –