2015-03-25 41 views
0

這裏是我想要達到一個樣本:如何有條件地指定HTML輸入是禁用/只讀還是不是?

@Html.EditorFor(m => m.Description, 
    new { htmlAttributes = 
    new 
    { 
     @class = "form-control", 
     @readonly = Model.IsReadOnly, 
     disabled = Model.IsDisabled 
    } 
    }) 

的問題是,該瀏覽器將在readonlydisabled令牌的存在而不檢查其內容,所以當IsReadOnlyIsDisabled屬性false,它仍然會顯示爲disabled

有沒有簡單的解決方案呢?

+0

也許你應該寫[您自己的擴展(http://stackoverflow.com/questions/6660146/set -disable-attribute-based-on-a-condition-for-html-textboxfor)。 – 2015-03-25 05:01:47

+3

您需要測試每個條件 - 例如'@ H​​tml.EditorFor(m => m.Description,Model.IsDisabled?(object)new {disabled =「disabled」}:(object)new {})' – 2015-03-25 05:10:54

+0

@StephenMuecke迄今爲止最方便的答案。爲什麼不寫一個正確的答案? – Shimmy 2015-03-25 05:13:20

回答

1

HTML: -

@Html.EditorFor(m => m.Description, 
    new { htmlAttributes = 
    new 
    { 
     @class = "form-control" 
    } 
}); 

嘗試使用jQuery,如下所示: -

if(@Json.Encode(Model.IsReadOnly)) 
{ 
    $('#Description').attr('readonly','readonly') 
} 

if(@Json.Encode(Model.IsDisabled)) 
{ 
    $('#Description').attr('disabled','disabled') 
}