mvc3 モデルからテキストボックスの幅を設定する方法、私のモデルが次のようになっているとします。
public class MVCMODEL
{
[Required]
public int Name{ get; set; }
}
このテキストボックスがビューでレンダリングされるとき、その幅が800px
モデルにカスタムスタイルを追加する方法になるようにしたいですか?
ありがとう 、
mvc3 モデルからテキストボックスの幅を設定する方法、私のモデルが次のようになっているとします。
public class MVCMODEL
{
[Required]
public int Name{ get; set; }
}
このテキストボックスがビューでレンダリングされるとき、その幅が800px
モデルにカスタムスタイルを追加する方法になるようにしたいですか?
ありがとう 、
モデルからこれを行うことはできません。MVC では、モデルは、ページとの間で送受信される情報に対応するデータ構造の表現です。MVC のまさにポイントは、サイトの美学を実際に実行するロジックから分離することです。ビューの視覚的な側面を設定するには、ビューの CSS を変更する必要があります。
これは特定のレイアウト動作であるため実行できません。そのため、width
必要に応じてビューで を設定する必要があります。このようなものはあなたの問題を解決します:
@Html.TextBoxFor(model => model.Name, new { style = "width: 800px;"})
独自の型属性拡張を追加し、それに応じてモデル/ビュー モデル プロパティを装飾することもできますが (このブログ投稿DataAnnotation
に従って)、これは IMO の懸念の恐ろしい汚染になります。
同様の手法を使用し、ハードコードされた幅をレンダリングする代わりに、モデル プロパティを CSS クラスで装飾し、それに応じて CSS を使用して書式設定を制御する方が、多少良いでしょう。ただし、純粋主義者は依然として同意しない可能性があります。ビュー モデルに CSS クラスを適用することでさえ、一線を越えている可能性があります。
例えば
[HtmlProperties(CssClass="LargeTextBox")]
[Required]
public int Name{ get; set; }
レンダリングされた Html は
<input type="text" value="" name="Name" id="Name" class="LargeTextBox"/>
実際の幅は、適切な方法で制御されます。.css
他のすべての回答に同意します...モデルでフィールドの最大長を次のように定義することもできます。
public class MVCMODEL
{
[Required]
[MaxLenght(300)] // number of characters allowed in this field.
public int Name{ get; set; }
}
このようなものを書くことができます。
:<%=Html.TextBoxFor(m => m.Name, new { size=4})%>