Как указать атрибуты для помощника Html.TextBox, сохраняя при этом поиск значений из ViewData?
Я использую помощник Html.TextBox для создания текстовых полей. Я хочу установить атрибуты в текстовое поле, которое, как я понимаю, выполняется с использованием следующей перегрузки:
Html.TextBox (string name, object value, object htmlAttributes)
Однако я хочу поддерживать функциональность, в которой помощник HTML автоматически использует значение из ViewData или ViewData.Model, и я не вижу способа просто указать имя и htmlAttributes. Возможно ли это?
Ответы
Ответ 1
[EDIT] Посмотрев исходный код вы увидите, что все, что вам нужно сделать, это указать значение, равное нулю в сигнатуре, которое принимает имя, значение и htmlAttributes. Если значение равно null, оно попытается использовать значение из ViewData.
Html.TextBox( "name", null, new { @class = "css-class" } );
Ответ 2
попробуйте это для бритвы
@Html.TextBox("name", "", new {@class = "css-class", @onclick = "alert('demo');"});
Ответ 3
Если вам не нужно указывать значение из вашей модели, вы всегда можете просто использовать стандартный HTML:
<input type="text" name="fieldName" id="fieldName"/>
Затем вы можете указать все необходимые атрибуты в теге.
Ответ 4
@Tvanfosson, спасибо за ответ. Сегодня это помогло мне. Я пытался создать таблицу со строкой для каждой части в списке. Я хотел установить несколько атрибутов на основе каждой части, и вы указали мне в правильном направлении. В случае, если кто-то хочет увидеть цикл и как установить несколько атрибутов, здесь идет:
<% foreach (var poPart in Model.myPartsList)
{ %>
<tr>
<td>
<% var part = Model.PartID; %>
<%: Html.TextBox(part.ToString(), null, new { @class = "narrowText", @id = part.ToString() })%>
</td>
</tr>
<% } %>
Ответ 5
@Html.TextBox("Name", "Value", new {@class = "class1 class2", @customAttributeName = "attributeValue"})