Я пытаюсь динамически установить атрибут disabled в текстовом поле html, и у меня возникают проблемы
Я попытался сделать это, на мой взгляд:
string disabledString = "";
if (SomeLogic)
{
disabledString = "disabled";
}
Html.Textbox()...new Dictionary<string, object> { { "maxlength", 50 }, { "disabled", readOnlyState } })%>
Как вы можете видеть Я устанавливаю отключенный атрибут на " Я что-то упустил?
Это было некрасиво для нас из-за того, что спецификация HTML здесь плохая.
В основном в нашем коде представления у нас была некоторая логика, подобная этой:
bool isPlatformOwner = false;
object disabledAttributes = new { @disabled="disabled", @readonly="readonly" };
//omitted code setting isPlatformOwner
if (isPlatformOwner)
{
disabledAttributes = new { };
}
Затем для наших элементов управления у нас было следующее:
<%=Html.CheckBoxFor(f => f.AddToReleaseIndicator, disabledAttributes)%>
Анонимные типы спасли нас здесь, но, как я уже сказал, это стало немного уродливым.
Я думаю, вы хотите вообще опустить атрибут disabled, если хотите, чтобы он был включен. Старые браузеры смотрят на следующее и отключают текстовые поля:
<input type="text" disabled></input>
Другими словами, в более старом HTML = "disabled" не было необходимости, поэтому по соображениям совместимости вы должны просто опустить атрибут, если хотите, чтобы он отображался правильно. Однако я не уверен, что произойдет, если вы попробуете строгий DOCTYPE.