web-dev-qa-db-ja.com

Html.TextBoxFor形式およびcssクラス

以下の2行のコードは正常に機能しますが、それらを組み合わせたいと思います。つまり、最初のコード行で@classを使用します。どうやってやるの?

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

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

おかげで、

フィリピン人

29
Filip

私はここに遅れていることは知っていますが、この問題の解決策を見つけました:

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

繰り返しますが、遅いかもしれませんが、はるかに良い解決策は jquery.maskedinput plugin(nugetパッケージとしても利用可能)を使用することだと思います。

単に入力形式よりもプラグインを使用する方が良いのはなぜですか?まあ、誰かが入力を変更するとき、プラグインを使用しないとフォーマットを失います。

ここ 使い方とその仕組みのデモを見つけることができます。

0
Mateusz Kopij

これを達成するためのクリーンな方法はないのではないかと思います。いくつかの可能性があります。

  1. Productプロパティにエディターテンプレートを使用します。

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

    そして、このエディターテンプレート内:

    <%: Html.TextBox("Price", string.Format("{0:f}", Model.Product.Price), new { @class = "textBox150" }) %>
    <%: Html.TextBoxFor(model => model.Product.Name, new { @class = "textBox150" })%>        
    
  2. クラスを追加するカスタムヘルパーを作成する

  3. これらのテキストボックスをspanでラップします。

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

    次に、CSSルールを変更します。

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