我有一个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>
。或者完全不同的方式。
答案 0 :(得分:2)
您可以将ASCX文件用于DNN模块,而不是ASPX文件。有一些示例说明如何在我的DNN简单文章模块(https://dnnsimplearticle.codeplex.com/SourceControl/latest#cs/View.ascx.cs)中将ASCX文件加载到DNN中的其他ASCX文件中