これは可能です(表示属性内のテキストのスタイルを設定するには)?
この問題は[Display]
属性内にはありません。これはあなたが表示に使用したHtml.LabelFor
ヘルパーの中にあります。この属性は常に値をHTMLでエンコードします。その後、
public static class HtmlExtensions
{
public static IHtmlString MyLabelFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression
)
{
var metadata = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData);
var htmlFieldName = ExpressionHelper.GetExpressionText(expression);
var labelText = (metadata.DisplayName ?? (metadata.PropertyName ?? htmlFieldName.Split(new char[] { '.' }).Last<string>()));
if (string.IsNullOrEmpty(labelText))
{
return MvcHtmlString.Empty;
}
var label = new TagBuilder("label");
label.Attributes.Add("for", TagBuilder.CreateSanitizedId(htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
label.InnerHtml = labelText;
return new HtmlString(label.ToString());
}
}
と:あなたは、この動作が気に入らない場合は、値をエンコードしませんカスタムヘルパーを書くことができ
@Html.MyLabelFor(x => x.Foo)
をこれがとてもうまくいきました。ありがとう。しかし、今私は別の問題に遭遇し、新しい質問を開きました:http://stackoverflow.com/questions/9824252/trying-to-modify-a-builder-to-style-text-in-dataannotation-attribute- displayna – REMESQ
EditorForまたはDisplayFor(つまりカスタムヘルパー)でも同じことをする必要がありますか?もしそうなら、上記のコードをコピーしてMyEditorForと呼ぶことができますか?ありがとう。 – REMESQ
私はEditorFor/DisplayForヘルパーのために[デフォルトテンプレート](http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates)を上書きできると思います。 html)に 'MyLabelFor'ヘルパーを呼び出します。 –