同様の質問への回答をここに投稿しました。
一般的なスタイルが必要な場合は、必要なスタイルをサポートする基本の TemplateViewModel クラスからカスタム テンプレートのモデルを派生させることができます。
public interface ITextSpecifier
{
int? Size { get; }
bool AutoGrow { get; }
}
public class TemplateViewModel<T> where T: class
{
public IDictionary<string, string> Attributes { get; }
public ITextSpecifier TextStyle { get; private set; }
public IColorSpecifier ColorStyle { get; }
public T TextStyle(int size, bool autogrow)
{
TextStyle = new TextSpecifier(size, autogrow);
return this;
}
}
public class TextBoxViewModel: TemplateViewModel<TextBoxViewModel>
{
}
<%= Html.EditorFor(x => new TextBoxViewModel(Model.StringData).TextStyle(10, false)) %>
テンプレートでは:
<!-- template page derived from typed control for TextBoxViewModel -->
<input type='text' <%= Model.TextStyle.Size != null
? "size='" + Model.TextStyle.Size + "'" : "" %> ... />
ちょっとした作業です。そのため、MVC v2 リリースで一般的な方法が発明されることを願っています。