37 Stimmen

Wie kann ich Attribute für eine Html.TextBox-Hilfe angeben, während der Wertabruf von ViewData beibehalten wird?

Ich verwende die Html.TextBox-Hilfsfunktion zum Erstellen von Textboxen. Ich möchte Attribute für das Textfeld festlegen, was meines Wissens mit der folgenden Überladung geschieht:

Html.TextBox (string name, object value, object htmlAttributes)

Ich möchte jedoch die Funktionalität beibehalten, bei der der HTML-Helfer automatisch den Wert von ViewData oder ViewData.Model verwendet, und ich sehe keine Möglichkeit, nur den Namen und die htmlAttribute anzugeben. Ist dies möglich?

64voto

tvanfosson Punkte 506878

[EDIT] Nach einem Blick auf die Quellcode scheint es, dass Sie nur den Wert als Null in der Signatur angeben müssen, die einen Namen, einen Wert und htmlAttributes annimmt. Wenn der Wert null ist, wird versucht, den Wert aus den ViewData zu verwenden.

Html.TextBox( "name", null, new { @class = "css-class" } );

8voto

VnDevil Punkte 1137

Versuchen Sie dies für Rasierapparat

@Html.TextBox("name", "", new {@class = "css-class", @onclick = "alert('demo');"});

6voto

Andrew Van Slaars Punkte 1816

Wenn Sie den Wert Ihres Modells nicht angeben müssen, können Sie auch einfach den Standard-HTML-Code verwenden:

<input type="text" name="fieldName" id="fieldName"/>

Dann können Sie im Tag die gewünschten Attribute angeben.

2voto

Jon Crowell Punkte 20512

@Tvanfosson, danke für die Antwort. Sie hat mir heute sehr geholfen. Ich habe versucht, eine Tabelle mit einer Zeile für jedes Teil in einer Liste zu erstellen. Ich wollte mehrere Attribute für jedes Teil festlegen, und Sie haben mich auf den richtigen Weg gebracht. Falls jemand die Schleife sehen möchte und wissen will, wie man mehrere Attribute setzt, hier ist sie:

    <% 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>
   <% } %>

0voto

Newred Punkte 649
 @Html.TextBox("Name", "Value", new {@class = "class1 class2", @customAttributeName = "attributeValue"})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X