2012-05-22 34 views
3

我想禁用我的視圖中使用模型屬性的複選框。但是,在這兩種情況下,複選框都是禁用的。我不應該在下面的代碼中使用「」嗎?禁用視圖中的複選框

<%= Html.CheckBoxFor(c => c.HasList, new { disabled = (Model.CanModifyList) ? "" : "disabled" })%> 

回答

3

即使您已設置disabled=""它仍然歸類爲被禁用的元素將仍然有disabled屬性。如果不使用JavaScript/JQuery,則必須在View中執行if語句。

多多包涵,因爲我已經習慣了剃刀語法,但它應該是這樣的:

<%if (model.CanModifyList) { %> 
<%= Html.CheckBoxFor(c => c.HasList)%> 
<% } else { %> 
<%= Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })%> 
<% } %> 

什麼會更好是,如果你創建了自己的HTML幫助(也許過載到CheckBoxFor)返回了正確的HTML取決於模型屬性,這樣可以節省你在你的看法:)做額外的邏輯

+0

是的。我試圖看看是否可以使用條件運算符,而不使用if/else。 – dotNetNewbie

+0

@dotNetNewbie耶是唯一的方法來做到這一點將是一個Html幫手:) – mattytommo

0

@ mattytommo的代碼可以改寫爲

@{ 
    if (model.CanModifyList) 
    { 
     @Html.CheckBoxFor(c => c.HasList)%> 
    } 
    else 
    { 
     @Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" }) 
    } 
}