有条件启用/禁用asp.net的MVC文本框

问题描述:

这是我的尝试:有条件启用/禁用asp.net的MVC文本框

@Html.TextBoxFor(model => model.EntryDate, new { style="width:90px;",((_new || _modify) ? @disabled="disabled":"") }) @Html.ValidationMessageFor(model => model.EntryDate) 
+0

广东话你只需要使用@if(comeCondition){@ Html.TextBo xFor(model => model.EntryDate)} else {@ Html.TextBoxFor(model => model.EntryDate,new {@disabled =“disabled”)} – 2014-09-01 12:03:33

+0

嗯,我希望有一个简单而优雅的方式去它 – POIR 2014-09-01 12:04:44

+0

好的,会发布回答 – 2014-09-01 12:32:07

我不知道,但尝试这一个:

@Html.TextBoxFor(model => model.EntryDate, (_new || _modify) ? new{ @Style="width:90px;", @Disabled="disabled"} : new{ @Style="width:90px;"}) 
+0

你确定这些匿名类型是否兼容?你测试过了吗? – Charleh 2014-09-01 12:51:18

下面的工作,因为只有一个html属性

@Html.TextBoxFor(m => m.EntryDate, (_new || _modify) 
    ? new { @disabled = "disabled" } 
    : null) 

但是,一旦添加了style属性,这将产生一个错误,因为没有隐式转换吐温和new { @Style="width:90px;" }所以你需要做到这一点在if

@if(_new || _modify) { 
    @Html.TextBoxFor(m => m.EntryDate, new { @disabled = "disabled", style="width:90px;")} 
} else { 
    @Html.TextBoxFor(m => m.EntryDate, new { style="width:90px;" }) 
} 

编辑

铸造HTML字典object似乎工作,但我还没有完全测试这个(我不知道它的“一个简单而优雅的方式来给它”

@Html.TextBoxFor(m => m.EntryDate, (_new || _modify) 
    ? (object)new { @disabled = "disabled", style="width:90px;" } 
    : (object)new { style="width:90px;" })