HtmlAnchor 控件

楼主
HtmlAnchor 控件
创建一个服务器端控件,该控件映射到 <a> HTML 元素并允许您链接到其他 Web 页。

<a id="programmaticID"
   href="linkurl"
   name="bookmarkname"
   OnServerClick="onserverclickhandler"
   target="linkedcontentframeorwindow"
   title="titledisplayedbybrowser"
   runat="server" >
linktext
</a>
备注
使用 HtmlAnchor 控件以编程方式控制 <a> HTML 元素。可使用 <a> HTML 元素创建允许您移动到该页上的其他位置或其他 Web 页的超级链接。HtmlAnchor 控件必须使用带有开始和结束标记的正确格式。您可以通过将文本放置在开始和结束标记之间来指定控件标题。此服务器控件通常用于动态修改 <a> 元素的属性和属性,显示来自数据源的超级链接和控制事件以动态生成 HtmlAnchor 控件。

可以通过使用 Target 属性来指定显示新 Web 页的位置。除了以下划线开始的特殊值 _blank、_self、_parent 和 _top 外,Target 值必须以 a 到 z(不区分大小写)范围中的字母开头。

可以动态生成希望 HtmlAnchor 控件链接到的 URL。若要动态生成 HRef 属性,请在 HTML 文档中声明 HtmlAnchor 控件。例如:

<a id="anchor1" runat="server">
注意 请记住将 HtmlAnchor 控件嵌入 HtmlForm 控件的开始和结束标记中。
下一步,编写一个事件处理程序,向 HtmlControl 的 HRef 属性分配一个 URL。
虽然 HtmlAnchor 控件不直接支持绑定到数据源,但可以从数据源中的字段的值生成超级链接。首先将数据源绑定到列表控件,如 Repeater。然后在列表控件内部声明一个 HtmlAnchor 控件。最后添加 HRef 属性值的内联代码,使用 DataBinder 类的 Eval 方法指定要使用的字段。

示例
下面的示例说明当 Page_Load 事件发生时,如何动态地将 URL 与 HtmlAnchor 控件关联。

[Visual Basic]
Sub Page_Load(sender As Object, e As EventArgs)
   anchor1.HRef = "http://www.microsoft.com"
End Sub
[C#]
void Page_Load(object sender, EventArgs e)
{
   anchor1.HRef = "http://www.microsoft.com";
}
下面的示例说明如何将 HtmlAnchor 控件包含在 Repeater 控件中。将数据绑定到 Repeater 控件,并将 HtmlAnchor 控件放置在将数据源中的指定字段显示为超级链接的 ItemTemplate 中。

[Visual Basic]
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
   Sub Page_Load(sender As Object, e As EventArgs)
      Dim dt As New DataTable()
      Dim dr As DataRow
      dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
      dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
      dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))
      dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
      dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
      Dim i As Integer
      For i = 0 To 8
         dr = dt.NewRow()
         dr(0) = i
         dr(1) = "Item " + i.ToString()
         dr(2) = DateTime.Now
         If i Mod 2 <> 0 Then
            dr(3) = True
         Else
            dr(3) = False
         End If
         dr(4) = 1.23 *(i + 1)
         dt.Rows.Add(dr)
      Next i
      MyRepeater.DataSource = New DataView(dt)
      MyRepeater.DataBind()
   End Sub
</script>

<body>
   <h3>Data Binding with the HtmlAnchor</h3>
   <p>
   <form runat=server>
      <asp:Repeater id="MyRepeater" runat="server">
         <ItemTemplate>
            Link for
            <a href='<%# DataBinder.Eval(Container, _
                         "DataItem.StringValue", _
                         "detailspage.aspx?id={0}") %>'
               runat="server">
               <%# DataBinder.Eval(Container, "DataItem.StringValue") %>
            </a>
            <p>
         </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
[C#]
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
   void Page_Load(Object sender, EventArgs e)
   {
      DataTable dt = new DataTable();
      DataRow dr;
      dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
      dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
      dt.Columns.Add(new DataColumn("DateTimeValue", typeof(DateTime)));
      dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));
      dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
      for (int i = 0; i < 9; i++)
      {
         dr = dt.NewRow();
         dr[0] = i;
         dr[1] = "Item " + i.ToString();
         dr[2] = DateTime.Now;
         dr[3] = (i % 2 != 0) ? true : false;
         dr[4] = 1.23 * (i+1);
         dt.Rows.Add(dr);
      }
      MyRepeater.DataSource=new DataView(dt);
      MyRepeater.DataBind();
   }
</script>

<body>
   <h3>Data Binding with the HtmlAnchor</h3>
   <p>
   <form runat=server>
      <asp:Repeater id="MyRepeater" runat="server">
         <ItemTemplate>
            Link for
            <a href='<%# DataBinder.Eval(Container,
                         "DataItem.StringValue",
                         "detailspage.aspx?id={0}") %>'
               runat="server">
               <%# DataBinder.Eval(Container, "DataItem.StringValue") %>
            </a>
            <p>
         </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>

电脑版 Page created in 0.0781 seconds with 4 queries.