使用元数据和/或反射生成ASP.NET工具提示?

时间:2013-04-09 15:48:42

标签: c# asp.net reflection tooltip metadata

使用C#/ ASP.NET,我想知道是否有办法使用元数据轻松生成标签和文本框的工具提示。我在ASP.NET MVC中找到了许多关于如何执行此操作的资源,但不是普通的ASP.NET。我尝试过使用各种Display属性以及Description但没有成功。有一种简单的方法可以实现自动化吗?

例如,当鼠标悬停在与asp:Label对应的asp:TextBoxDateSent上时,我想使用下面的代码显示“应用程序的发送日期”在生成的网页上。

public class ProjectMetadata
{
    [Required(ErrorMessage = "Enter a date")]
    [Description("Date that the application was sent")]
    public object DateSent { get; set; }

    [Required(ErrorMessage = "Enter a description")]
    [StringLength(256, ErrorMessage="Description must be 256 characters or less")]
    public object Description { get; set; }
}

[MetadataType(typeof(ProjectMetadata))]
public partial class Project
{
    public DateTime DateSent { get; set; }
    public string Description { get; set; }
}

修改 请注意,目前我让ASP.NET完成在页面上生成控件的所有工作(在代码隐藏中没有做任何事情):

<asp:TextBox ID="tbDateSent" runat="server" Text='<%# Bind("DateSent", "{0:d}") %>'/>

<asp:Label ID="LabelDateSent" runat="server" Text='<%# Eval("DateSent", "{0:d}") %>'/>

也许这就是我需要添加的内容:ToolTip='<%# SomeExpressionHere %>'

1 个答案:

答案 0 :(得分:0)

如何填充.NET控件?我猜是这样的:

Project project = GetProject();

// TextboxProjectName is your TextBox on your Page / UserControl

TextboxProjectDescription.Text = project.Description; 
TextboxProjectDescription.Attributes["data-tooltip"] = project.DateSent.ToShortDateString(); // Or whatever format you want

然后你会有这个标记:

<input type="text" data-tooltip="Your date string" />

然后你可以简单地使用jQuery Tooltip库来工具化所有找到数据(“工具提示”)的HTML元素。

修改

试试这个:

[MetadataType(typeof(ProjectMetadata))]
public partial class Project
{
    public DateTime DateSent { get; set; }
    public string Description { get; set; }
    public string TooltipText 
    { 
       get {
           return "Date: " + DateSent.ToShortDateString(); // whatever tooltip you want
       }
       set {}
    }
}

然后你可以按要求做到:

<asp:TextBox ID="tbDateSent" runat="server" Text='<%# Bind("DateSent", "{0:d}") %>'
ToolTip='<%# Bind("TooltipText") %>' />