web-dev-qa-db-fra.com

Html.TextBoxFor format et classe css

Les deux lignes de code ci-dessous fonctionnent bien, mais je veux les combiner . Ce que je veux dire, c'est: Je veux utiliser la classe @ dans la première ligne de code . Comment puis-je faire cela?

<%: Html.TextBoxFor(model => model.Product.Price, String.Format("{0:f}", Model.Product.Price))%>

<%: Html.TextBoxFor(model => model.Product.Name, new { @class = "textBox150" })%>

merci,

Filip

27
Filip

Je sais que je suis bien en retard mais je viens de trouver une solution à ce problème:

<%: Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", Value=String.Format("{0:d}", Model.StartDate) })%>
64
Cheddar

Encore une fois, il est peut-être tard, mais je pense que la meilleure solution consiste à utiliser jquery.maskedinput plugin (également disponible sous forme de paquet nuget).

Pourquoi est-il préférable d'utiliser un plugin plutôt qu'un simple format d'entrée? Eh bien, quand quelqu'un modifie une entrée, vous perdrez la mise en forme, si vous n'utilisez pas de plugin.

Ici vous pouvez trouver un usage et une démonstration de son fonctionnement.

0
Mateusz Kopij

Je crains qu'il n'y ait pas de moyen propre pour atteindre cet objectif. Il y a deux possibilités:

  1. Utilisez un modèle d'éditeur pour la propriété Product:

    <%: Html.EditorFor(x => x.Product) %>
    

    et à l'intérieur de ce modèle d'éditeur:

    <%: Html.TextBox("Price", string.Format("{0:f}", Model.Product.Price), new { @class = "textBox150" }) %>
    <%: Html.TextBoxFor(model => model.Product.Name, new { @class = "textBox150" })%>        
    
  2. Ecrivez un assistant personnalisé qui ajoutera la classe

  3. Enveloppez ces zones de texte dans une span:

    <span class="container150">
        <%: Html.TextBoxFor(model => model.Product.Price, String.Format("{0:f}", Model.Product.Price))%>
        <%: Html.TextBoxFor(model => model.Product.Name)%>
    </span>
    

    puis modifiez votre règle CSS:

    .container150 input {
        // some rule that applies to the textbox
    }
    
0
Darin Dimitrov