如何从DNN皮肤代码后面访问asp.net控件

问题描述 投票:0回答:1

我正在使用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
        }
    }
}
c# asp.net dotnetnuke
1个回答
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)
    {
        [...]
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.