ビューでEditorForコントロールの幅を設定できますか?
私はいくつかのパラメーターを設定しました:
[Required, DisplayName("Payee Name"), StringLength(50)]
public string Name { get; set; }
ただし、レンダリングされるテキストボックスの幅を設定することはできません。
<table width="300" border="0" cellpadding="3" cellspacing="0">
<tr>
<td>
<%=Html.LabelFor(m => m.Name)%>
</td>
<td>
<%=Html.EditorFor(m => m.Name)%>
</td>
</tr>
これは何とかできますか?
私は試した:
<%=Html.EditorFor(m => m.Name, new {width=50)%>
しかし、喜びはありません...
EditorForの代わりに、TextBoxForを使用します。
<%=Html.TextBoxFor(m => m.Name, new {style = "width:50px"})%>
CSSを使用してコントロールの幅をスタイルすることの何が問題になっていますか?
Mvc 5では、すべてのテキストエリアにmax-width = 200を設定するsite.cssの設定があります。このブログ投稿を見つけるまで、それは私を混乱させました。 http://weblogs.asp.net/paullitwin/visual-studio-2013-asp-net-mvc-5-scaffolded-controls-and-bootstrap Paul Litwinが述べているように:
はい、マイクロソフトは何らかの理由で、すべての入力、選択、およびテキストエリアコントロールの最大幅を280ピクセルに設定しています。これの背後にある動機は不明ですが、これを変更するか、フォームコントロールを他のCSSクラスに割り当てることによってこれをオーバーライドするまで、コントロールは280pxを超えることはできません。
/* Set width on the form input elements since they're 100% wide by default */
input,
select,
textarea {
max-width: 280px;
}
実用的な場合は、max-widthを600pxなどに変更します
<%=Html.EditorFor(m => m.Name, new {width=50)%>
をこれに置き換えます
<%=Html.EditorFor(m => m.Name,new { htmlAttributes = new { style = "width: 50px" }, }
With BootStrap 3
@Html.EditorFor(model => model.PriceIndicatorDesc, new { htmlAttributes = new { @class = "form-control", @style = "width:280px" } })
前述したように、行きたい場所はsite.cssです
input,
select,
textarea {
max-width: 280px;
}
そこに必要なデフォルト値を設定するか、ブロックを削除してBootstrapデフォルトの100%を取得できます。個人的に、次のオプションを追加して、問題のフィールド:
.form-control-25 {
max-width: 25%;
}
.form-control-50 {
max-width: 50%;
}
.form-control-75 {
max-width: 75%;
}
.form-control-100 {
max-width: 100%;
}
「!important」をcss属性に追加して、TextBoxForのデフォルトを確実にオーバーライドする必要がある場合があります。 width:50px!important;
通常のCSSルール以外のカスタム幅が必要で、エディターテンプレートを使用している場合
<%=Html.EditorFor(m => m.Name, new { Width = 50})%>
次に、Stringのエディターテンプレートでこれをテンプレートに追加します
@Html.TextBox(s => {
...
if (ViewBag.Width != null )
{
s.Width = ViewBag.Width;
}
}).Bind(Model).GetHtml()
Site.cssのCSSファイルでは、MVCプロジェクトを最初に作成したときにVSがすべてを自動生成した場合、デフォルトの最大幅は280pxです。幅の大きさに関係なく@html.editorfor
特定のIDで、以下の構文によって制限されます。
input,
select,
textarea{
max-width:280px
}
新しいmax-widthまたはmax-heightを指定することで、ここで変更できます。
PatrikLindströmはMax-widthで正しいです。
最大幅と幅を設定することでこれを回避することができました
@Html.EditorFor(model => model.Source, new { htmlAttributes = new { @class = "form-control", @placeholder = "Source", @style = "width: 900px;max-width: 900px;" } })
ASP.NET Coreの場合:
<%=Html.TextBoxFor(m => m.Name, new { htmlAttributes = new { style = "width: 50px" } })%>