动态加载的 aspx 内容不在 DNN 模块中填充

本文关键字:DNN 模块 填充 加载 aspx 动态 | 更新日期: 2023-09-27 18:31:22

我有一个 DNN 模块,需要根据登录角色加载一些不同的内容,无需重新编译模块即可轻松更改这些内容。我正在尝试将 aspx 文件加载到文本对象。

StringBuilder SB = new StringBuilder();
using (StreamReader SR = new StreamReader("test.aspx"))
{
     while(!SR.EndOfStream){
         string line = SR.ReadLine();
         SB.Append(line);
     }
     SR.Close();
}
//ltl1 is <asp:Literal runat="server" ID="ltl1" >
ltl1.Text = SB.ToString();
object test1 = ltl1.FindControl("txtTextBox1");
object test2 = ltl1.FindControl("txtTextBox2");
lblInformation.Text = "Loaded:"
lblInformation.Text += (test1 == null ? " NULL1" : test1.ToString()) 
lblInformation.Text += (test2 == null ? " NULL2" : test2.ToString());

正在加载此文件:

<div runat="server" ID="divMain">
    <b>TEST FILE</b>
    <br />
    <input runat="server" ID="txtTestBox1" />
    <asp:TextBox runat="server" ID="txtTestBox2" />
</div>

如果我检查源代码,它看起来像这样:

 <div runat="server" id="divMain">  
     <b>TEST FILE</b>   
     <br>   
     <input runat="server" id="txtTestBox1">    </input>
     <asp:textbox runat="server" id="txtTestBox2"></asp:textbox>
 </div>

但是,只有<input>文本框,<asp:TextBox>在浏览器中不可见。此外,它们在后面的 C# 代码中都不可见

lblInformation.Text = Loaded: NULL1 NULL2

我需要的是访问<input>文本框或显示<asp:textbox>。或者一种完全不同的工作方式。

动态加载的 aspx 内容不在 DNN 模块中填充

您将使用 ASCX 文件到 DNN 模块中,而不是 ASPX 文件。在我的 DNN 简单文章模块 (https://dnnsimplearticle.codeplex.com/SourceControl/latest#cs/View.ascx.cs) 中有一些如何将 ASCX 文件加载到 DNN 中的其他 ASCX 文件中的示例