我有一个使用 Site.Master 的 asp 页面。
我在 Site.Master 中放了一个链接,master 包含了 default.aspx。如何访问asp文件中的链接属性?
在 Site.Master :
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Register.aspx"
Target="_blank">Register</asp:HyperLink>
我有一个使用 Site.Master 的 asp 页面。
我在 Site.Master 中放了一个链接,master 包含了 default.aspx。如何访问asp文件中的链接属性?
在 Site.Master :
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Register.aspx"
Target="_blank">Register</asp:HyperLink>
做到这一点的唯一方法是按照以下方式做一些事情:
HyperLink link = this.Master.FindControl("id_of_the_control_you_are_looking_for") as HyperLink;
但请注意FindControl
,它不是递归的,因此您需要首先找到包含您要查找的超链接的控件,然后FindControl
使用您需要的超链接的 id 在此容器上执行另一个操作。
您需要做的第一件事是将 MasterType 指令添加到您的内容页面:
<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Namespace.Default" %>
<%@ MasterType VirtualPath="~/Site.Master" %>
现在,您可以从内容页面中的 MasterPage 访问每个公共项目。
假设您的 MasterPage 在其代码隐藏中有这个:
public partial class Site : System.Web.UI.MasterPage
{
public string Name { get; set; }
}
然后,您可以在内容页面中执行此操作:
public partial class Default
{
public void Page_Load(object sender, EventArgs e)
{
Master.Name = "Bobby";
}
}
我不确定您的问题中的“链接属性”是什么意思,但如果您指的是超链接,那么您可以这样做:
public partial class Site : System.Web.UI.MasterPage
{
public HyperLink SharedHyperLink { get { return myHyperLink; } }
}
public partial class Default
{
public void Page_Load(object sender, EventArgs e)
{
Master.SharedHyperLink.NavigateUrl = "/Contact.aspx";
}
}
假设您在母版页的某处有一个链接:
<asp:LinkButton ID="mylink" runat="server" Text="OK" CssClass="test" />
然后在子页面后面的代码中,您可以像这样获取它:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var link = FindControlRecursive(Master, "mylink") as LinkButton;
if (link != null)
{
var css = link.CssClass;
// TODO: do something with the link
}
}
private static Control FindControlRecursive(Control control, string id)
{
if (control.ID == id)
{
return control;
}
foreach (Control ctrl in control.Controls)
{
var foundCtrl = FindControlRecursive(ctrl, id);
if (foundCtrl != null)
{
return foundCtrl;
}
}
return null;
}
}