【问题标题】:How to render a Web User Control into a PlaceHolder如何将 Web 用户控件呈现为 PlaceHolder
【发布时间】:2014-01-12 01:29:02
【问题描述】:

有人可以帮我创建自定义 Web 用户控件以动态呈现到占位符中吗?

我刚刚创建了一个 web 用户控件,它在服务器端没有代码,只是在 aspx 中设计,因为所有功能都是客户端的。

网页控制

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebControlDemo.ascx.cs" Inherits="Project1.Web.UI.WebControlDemo" %>
<div>
Blah blah blah blah
</div>

在另一个页面中

protected void button1_Click(object sender, EventArgs e)
{
   WebControlDemo wcd = new WebControlDemo();
   this.placeHolder1.Controls.Add(wcd);
}

但我什么也看不见。那么我需要添加什么才能最终呈现?

【问题讨论】:

    标签: c# asp.net user-controls render placeholder


    【解决方案1】:

    您不应在代码中手动创建用户控件。您应该使用 Page 对象中的 LoadControl 方法。然后它将正确初始化它。像这样

    protected void button1_Click(object sender, EventArgs e)
    {
       WebControlDemo wcd = this.LoadControl("~/SomePath/WebControlDemo.ascx") as WebControlDemo;
       this.placeHolder1.Controls.Add(wcd);
    }
    

    【讨论】:

    • 谢谢。它有效,但是有一种方法可以在同一个控件内进行初始化,以便直接将其添加到占位符中?
    • 初始化是什么意思?用户控件也有Page_Load方法,可以在里面进行初始化。
    • 我的意思是在同一个控件的 Init 事件中做同样的事情 LoadControl 以避免在主页面中暴露控件并直接使用 placeHolder.Controls.Add(new WebControlDemo())。
    • 是的,您可以在 Init 中加载此控件,然后在 Button1_Click 中添加它。或者作为另一种解决方案,您可以将其 aspx 标记放入占位符,但设置 Visible=false。然后当您需要显示它时,您只需将 Visible 切换为 True。在这种情况下,您不需要手动创建它
    猜你喜欢
    • 2010-12-06
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多