我正在使用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
}
}
}
答案 0 :(得分:0)
在我们的示例中,我们创建了一个用户控件,例如:
<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)
{
[...]
}
}