Kir*_*Koa 4 .net html c# asp.net
是否有可能有一个方法返回一个带有ASP.NET代码的字符串在aspx文件中调用并在重新加载页面之前运行该代码?
所以几乎有如下内容:
<asp:DataList //blahblah>
<ItemTemplate>
<%= GenerateTable() %>
</ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)
GenerateTable()创建一个表,其中包含asp:Label对象,其值由asp:DataList的DataSource确定.
现在,我正确地生成了ASP.NET代码.问题是它在页面加载之前没有翻译成HTML,所以你看不到它.
更新: 我想要一个单独的方法来生成ASP.NET代码的原因是因为我想使列显示可配置,因此网站并不总是显示相同的列.
更新解决方案尝试: 我尝试创建以下用户控件来插入我的ASP.NET代码,但它仍然遇到同样的问题.我做错了吗?
用户控制:
<%@ Control Language="C#" CodeBehind="TableGenerator.ascx.cs" Inherits="DagReport_WebRole.DynamicData.FieldTemplates.TableGenerator" %>
<div class="tableRow">
<%= this.GetASPCode() %>
</div>
Run Code Online (Sandbox Code Playgroud)
用户控件C#:使用System.Web.UI;
namespace DagReport_WebRole.DynamicData.FieldTemplates
{
public partial class TableGenerator : System.Web.DynamicData.FieldTemplateUserControl
{
public string Code { get; set; }
public string GetASPCode()
{
return Code;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的ASPX文件中:
<ItemTemplate>
<div class="dagRow"></div>
<userControl:TableGenerator
Code="<%=GetRowASPCode()%>"></userControl:TableGenerator>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
Yur*_*ter 10
您可以将用户控件添加到ItemTemplate中,并在用户控件中执行代码,而不是像现在一样尝试直接代码注入.代码将动态构建所需的ASP.NET控件并将它们添加到用户控件的.Controls集合中.
通过这种方式,您将拥有两全其美的优势:动态代码执行和(因为用户控件参与页面生命周期)正确的HTML生成.
UPDATE
这是一个基本的例子.假设您创建了用户控件"WebUserControl2.ascx"并将其添加到主页面:
<%@ Register src="WebUserControl2.ascx" tagname="WebUserControl2" tagprefix="uc1" %>
Run Code Online (Sandbox Code Playgroud)
然后,您可以将其添加到DataList ItemTemplate:
<asp:DataList runat="server" ID="DataList1">
<ItemTemplate>
<uc1:WebUserControl2 ID="MyWebUserControl" runat="server" />
</ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)
在您的Web用户控件WebUserControl2.ascx.cs代码中添加标签,文本框和按钮:
protected void Page_Load(object sender, EventArgs e)
{
Label Label1 = new Label();
Label1.ID="Label1";
Label1.Text = "Please enter info: ";
this.Controls.Add(Label1);
TextBox Textbox1 = new TextBox();
Textbox1.ID="Textbox1";
this.Controls.Add(Textbox1);
Button Button1 = new Button();
Button1.ID = "Button1";
Button1.Text = "Submit";
this.Controls.Add(Button1);
}
Run Code Online (Sandbox Code Playgroud)
当页面运行并绑定DataList时,您将得到类似的内容:

您可以向用户控件添加属性并从主页面分配它们的值,例如DataList ItemCreated事件,这样控件将知道当前正在创建哪个项目并相应地执行操作.
| 归档时间: |
|
| 查看次数: |
8648 次 |
| 最近记录: |