您可以創建自己的屬性,將工具提示添加到模型元數據,然後使用自定義幫助程序方法呈現適當的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。
我會通過jQuery來做到這一點。 jQuery UI剛發佈了一個支持tooltip的新版本。請參閱http://jqueryui.com/tooltip/ – user1477388
這與今天的另一個SO問題密切相關。 http://stackoverflow.com/questions/13052836/set-html-attributes-with-data-annotation – jessegavin
爲什麼密碼工具提示必須是密碼屬性的成員?你不能直接在模型上創建一個model.PasswordTooltip屬性嗎?您可能希望在Resource Resx文件中添加類似以下的內容以供將來本地化。 –