14

デフォルトでは

<%: Html.EditorFor(m => m.ConfirmationHeadline) %>

出力は次のとおりです。

 <input type="text" value="" 
        name="ConfirmationHeadline" id="ConfirmationHeadline" 
        class="text-box single-line">

ご覧のとおり、入力はすでにclass属性を追加しています。まあ、これは問題ではありません。ただ使用してください

<%: Html.EditorFor(m => m.ConfirmationHeadline, new { @class="span-11 last"}) %>

動作するはずです...エラー...いいえ!

これにより、まったく同じコードが出力されます。

ただし、正常に動作しますHtml.TextAreaFor()

text-box single-line自分のクラスを追加できるように、クラスを削除するにはどうすればよいですか? 編集する必要がある T4 テンプレートはありますか?

助けてくれてありがとう。

4

6 に答える 6

12

メソッドを介して組み込みのエディターテンプレートを使用する場合、発行されたクラス属性の値をカスタマイズする方法はありませんEditorFor。クラス値をハードコーディングします(詳細については、http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.htmlを参照してください) 。

2つのオプションがあります。

  1. 追加機能をサポートする独自のカスタムテンプレートを作成します。詳細については、こちらをご覧ください:http: //bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

  2. EditorForメソッドの出力を処理します。

 <%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
        .Replace("class=\"text-box single-line\"", 
                 "class=\"text-box single-line span-11 last\"")) %>
于 2010-11-02T18:03:24.620 に答える
6

MCV 5.1 では、htmlAttributes を利用できます。魅力のように機能します...

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })
于 2014-05-23T16:25:32.567 に答える
2

asp.net mvc は、コンテンツ フォルダーに site.css というファイルを作成します。テキスト ボックス クラスの幅がデフォルトで 30em に設定されていることがわかります。15em のようなより健全なものにリセットします。単一行クラスはどこにも定義されていないようです。

于 2010-12-01T06:15:52.710 に答える
1

TextBoxFor代わりに使用できます

于 2013-01-23T15:01:19.743 に答える
0

私はこれと同じ問題を抱えていて、上記の解決策のどれも好きではありませんでした。ここにも同様の投稿がありましたが、それらのソリューションも好きではありませんでした。いくつかのツールを試した後、気に入ったものを見つけたので、エディター テンプレートを引き続き使用できます (これは、可能な限り利用するようにしてください)。ここに解決策を投稿しました

于 2013-02-21T22:41:09.417 に答える
-2

このコードを試してください

@Html.Raw(
    Html.EditorFor(m => m.DataInicial).ToString()
    .Replace(
        "\"text-box single-line\"",
        "\"form-control text-box single-line\""))
于 2014-06-05T12:35:00.613 に答える