2014-09-01 5 views
0

Это то, что я пробовал:Условное включение/выключение asp.net MVC текстового поля

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

Cant вы просто использовать @if (comeCondition) {@ Html.TextBo xFor (model => model.EntryDate)} else {@ Html.TextBoxFor (model => model.EntryDate, new {@disabled = "disabled")} –

+0

Ну, я надеялся, что есть простой и элегантный способ для него – POIR

+0

ОК, опубликует ответ –

ответ

0

Я не уверен, но попробуйте это одна:

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

Вы уверены, что эти анонимные типы будут совместимы? Вы проверили это? – Charleh

1

Ниже будет работать, потому что есть только один HTML атрибут

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

Однако, как только вы добавляете атрибут стиля, это вызовет ошибку, потому что нет неявного преобразования не будет твин и 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;" }) 
Смежные вопросы