web-dev-qa-db-ja.com

mvc 3 Html.EditorFor html属性の追加が機能しない

EditorForにhtml属性を追加してみます

 @Html.EditorFor(model => model.UserName, new { style = "width: 100px" })

しかし、私が得る方法

<input id="UserName" class="text-box single-line" type="text" value="" name="UserName">
19
Hryhorii

EditorForはこれらの属性を上書きします。回避策については、 ASP.NET MVCのEditorFor()のHTML属性 を参照してください。

変更する必要があるのが幅の表示だけで、エディターテンプレートに依存していない場合、最も簡単な修正はTextBoxForを代わりに使用することです

 @Html.TextBoxFor(model => model.UserName, new { style = "width: 100px" })
17
DMulligan

私は同じ問題を抱えていて、これで解決しました...

<style type="text/css">
#UserName { 
    width: 100px; 
}
</style>

@Html.EditorFor(model => model.UserName)
7
BGTechie

@Html.EditorFor()は、モデル要素に基づいて使用されるコントロールのタイプを動的に決定します。

これらのカスタマイズは、@Html.LabelFor()@Html.TextBoxFor()で機能します。次のコードは精巣であり、正常に動作します。

カミソリ:

_@Html.LabelFor(model => model.UserName, null, new { style = "display: inline;" })
@Html.TextBoxFor(model => model.UserName, null, new { style = "display: inline;" })
_

生成されたHTML

_<label style="display: inline;" for="UserName">
<input name="LastActivityDate" id="UserName" style="display: inline;" type="text" value=""/>
_

渡される2番目の引数はnullであり、styleは3番目の属性であることに注意してください。 @Html.EditorFor()を使用する必要がある場合は、スタイルの代わりにCSSクラスを使用する必要があります

@Html.EditorFor() on [〜#〜] msdn [〜#〜]

注:コードはMVC4でテストされており、MVC3でも有効であることを願っています

2
BiLaL

使用する代わりに
@ Html.EditorFor(model => model.UserId)
使用する
@ Html.TextBoxFor(model => model.UserId、new {@Value = "Prabhat"})

1
Prabhat

価値があるのは、これと同じ問題でした。 Narenda Vのソリューションのわずかに異なるバージョンを使用して解決しました。

私はこのようなクラスを作成しました:(注-幅の代わりに最小幅)

.userName { min-width:40em; }

私の見解では:

@Html.EditorFor(model => model.UserName, new { @class = "userName" })

Min-widthではなくwidthを使用しなかった場合、機能しませんでした。ボブ

0
Bob T

TextBoxForではなくEditorForを使用する必要があり、ページに複数のエディターがあるが、特定のエディターの幅を変更するだけでよい場合...最も簡単なのは、CSSスタイルをクラスIDに追加することです:

<style type="text/css">
    input#UserName { width: 100px; }
</style>
0
Mike B