2015-03-25 39 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') 
} 
相关问题