Вы должны предоставить свой собственный метод расширения для Html.LabelFor()
(и тому подобное), который будет учитывать атрибут подсказки.Он не обязательно должен быть получен из аннотаций данных, поскольку он будет обрабатываться по своему усмотрению.
Конечно, вы можете наследовать от DisplayName
и затем использовать эту.Что ты получишь при этом?Вам нужно будет предоставить только один атрибут, например DisplayNameWithTooltip
, который будет работать как DisplayName
, и вы также будете использовать его в нашем коде для получения всплывающей подсказки.
Дополнительное редактирование
Если ваши всплывающие подсказки должны быть реализованы с использованием атрибута title
HTML-элемента, то я не хотел использовать какой-либо специальный синтаксис строки в атрибуте DisplayName
, а скорее создал новый класс атрибута, который наследовал бы DisplayNameAttribute
:
public class DisplayNameWithTooltipAttribute: DisplayNameAttribute
{
public string Tooltip { get; private set; }
public DisplayNameWithTooltipAttribute(string displayName, string tooltip) : base(displayName)
{
this.Tooltip = tooltip;
}
...
}
А затем используйте свой пользовательский атрибут:
[DisplayNameWithTooltip("Some display name", "Some tooltip")]
public ActionResult SetSomething(SomeObj val) { ... }
Таким образом, вам не придется анализировать ваши строки, и другой код сможет использовать его также, поскольку он наследуется от DisplayName
(потому что код, вероятно, использует звонки IsAssignableFrom
звонки и тому подобное).