モデルメタデータにツールチップを追加する独自の属性を作成してから、カスタムヘルパーメソッドで適切なhtmlをレンダリングすることができます。
例えば
属性
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class ToolTipAttribute : Attribute, IMetadataAware
{
public string Message { get; set; }
public ToolTipAttribute(string message)
{
Message = message;
}
public void OnMetadataCreated(ModelMetadata metadata)
{
metadata.AdditionalValues["ToolTip"] = Message;
}
}
ヘルパーメソッド
public static MvcHtmlString PasswordForWithToolTip<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TEnum>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var htmlAttributes = new Dictionary<string, object>();
if (metadata.AdditionalValues.ContainsKey("ToolTip"))
{
var toolTip = metadata.AdditionalValues["ToolTip"] as string;
if (!string.IsNullOrEmpty(toolTip))
htmlAttributes.Add("title", toolTip);
}
return htmlHelper.PasswordFor(expression, htmlAttributes);
}
ToolTip
次に、プロパティを属性で装飾し、を使用する@Html.PasswordFor
WithToolTip( x => x.Password)
と、適切なHTMLがレンダリングされます。