我正在使用Christoc's DNN templates处理DNN皮肤,当我在home.ascx文件上创建一个普通的ASP.NET控件时,我无法在后面的代码中引用它。
我知道在普通的web项目中,aspx.designer.cs
文件控制着所有这些,但我不知道如何为.ascx
文件生成一个文件,或者甚至知道它应该如何在DNN皮肤中工作。
如何从DNN外观模板中的代码引用ASP.NET控件?
这是我试图访问的控件:
<asp:HyperLink ID="hlAccountSettings" runat="server">My Account</asp:HyperLink>
而背后的代码:
namespace Company.Modules.CompanySkin2019
{
public partial class Home : SkinBase
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
UserInfo currUserInfo = UserController.Instance.GetCurrentUserInfo();
hlAccountSettings.NavigateUrl = Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "Profile", "userId=" + currUserInfo.UserID, "pageno=1");
// ^ ERROR: The name 'hlAccountSettings' does not exist in the current context
}
}
}
在我们的例子中,我们创建了一个用户控件,如:
<div class="checkbox">
<label>
<asp:CheckBox ID="changeForAll" runat="server" OnCheckedChanged="changeForAll_OnCheckedChanged" Text="Apply changes for all devices" Checked="True" AutoPostBack="true" />
</label>
</div>
而背后的代码:
public partial class ChangeForAllCheckbox : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
changeForAll.Checked = ...;
}
}
protected void changeForAll_OnCheckedChanged(object sender, EventArgs e)
{
[...]
}
}