Что ж, если вы используете MVC 3, вы можете использовать DisplayAttribute
и просто использовать параметр Description следующим образом.
Public Class User
<Display(Name = "User name", Description = "This is a description")> _
Public Property Name As String
End Class
<System.Runtime.CompilerServices.Extension> _
Public Shared Function HintFor(Of TModel, TValue)(html As HtmlHelper(Of TModel), expression As Expression(Of Func(Of TModel, TValue))) As IHtmlString
Dim attribute = ModelMetadata.FromLambdaExpression(Of TModel, TValue)(expression, html.ViewData)
Return MvcHtmlString.Create(attribute.Description)
End Function
MVC2
Я только что провел краткий тест, чтобы проверить, работает ли это. (Я не часто использую VB и использовал онлайн-конвертер) Нет никаких сообщений об ошибках или чего-то еще, но это даст ожидаемые вами результаты.
<System.Runtime.CompilerServices.Extension()> _
Public Shared Function HintFor(Of TModel, TValue)(html As HtmlHelper(Of TModel), expression As Expression(Of Func(Of TModel, TValue))) As IHtmlString
Dim ex As MemberExpression = DirectCast(expression.Body, MemberExpression)
For Each attribute As Attribute In ex.Expression.Type.GetProperty(ex.Member.Name).GetCustomAttributes(True)
If GetType(System.ComponentModel.DescriptionAttribute) = attribute.[GetType]() Then
Return MvcHtmlString.Create(DirectCast(attribute, System.ComponentModel.DescriptionAttribute).Description)
End If
Next
Dim x = ModelMetadata.FromLambdaExpression(Of TModel, TValue)(expression, html.ViewData)
Return MvcHtmlString.Create(x.Description)
End Function
Дополнительный
Я действительно не уверен, почему я сделал вышеупомянутое, когда ты мог сделать это просто так. (хотя я предполагаю, что MVC 2 может не работать должным образом с аннотациями данных)
<System.Runtime.CompilerServices.Extension()> _
Public Shared Function HintFor(Of TModel, TValue)(html As HtmlHelper(Of TModel), expression As Expression(Of Func(Of TModel, TValue))) As IHtmlString
Dim x = ModelMetadata.FromLambdaExpression(Of TModel, TValue)(expression, html.ViewData)
Return MvcHtmlString.Create(x.Description)
End Function