ASP.Net控件显示在页面上,但不显示在该页面上的用户控件中
我正在使用ASP.Net Web应用程序项目。我有一个用户控件,里面有一个asp.net按钮。当我在页面上使用该用户控件时,该按钮不会出现,但如果我将该按钮直接放在页面上,则按钮显示出来。任何想法是什么问题?ASP.Net控件显示在页面上,但不显示在该页面上的用户控件中
此外,该用户控件内,我可以重写Render方法并传递给渲染方法工作的考验,但我仍然没有得到
装配在web.config中注册的按钮
编辑:Dave的文章后,我发现任何东西放在.ascx文件无法正常工作,同时覆盖用户控件的绘制方法的工作
页
<%@ Page Title="Home" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Site.Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div>
<uc:SomeCustomControl ID="myControl" runat="server" />
<asp:Button runat="server" Text="outControl" />
</div>
</asp:Content>
控制.ascx文件
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" Inherits="Site.Controls.TestControl" %>
<asp:Button runat="server" Text="InControl" /><!--cant see this button-->
<p>I can't see this</p><!--cant see this text-->
的代码背后.ascx文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Site.Controls
{
public partial class TestControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write("I can see this");
base.Render(writer);
}
}
}
和页面源
I can see this
<input type="submit" name="ctl00$ContentPlaceHolder1$Button1" value="outControl" id="ctl00_ContentPlaceHolder1_Button1" />
如果您在注册页面这样
<%@ Register TagPrefix="uc" TagName="SomeCustomControl" Src="~/PathTo/TestControl.ascx" %>
顶部的控制(关键点在这里是SRC =“...”部分)
则加价和控件TestControl.ascx将可见并可用。如果仅指定控件的名称空间,例如在web.config <页面>指令(或页面顶部)中,则仅使用代码隐藏,并且忽略代码前(.ascx)中的任何标记
是否有用户控制影响的任何代码按钮的可见性?
用户控件的其余部分是否显示,还是只包含按钮?如果它只是一个按钮,那么整个用户控件可能无法正确渲染。将一些文本添加到用户控件中作为测试,以确保它只是不起作用的按钮,而不是整个用户控件。
您也可以尝试启用该页面的跟踪。用户控件和按钮应显示在控件层次结构列表中。如果他们不这样做,那么一个或两个都不能正确渲染。
此页面和控件是否在标准的默认应用程序中?有没有可能web.config或machine.config对你的UserControl有一些影响?也许是一个HttpModule?
除了从“默认”网站设置中检查外,您还可能需要进行一些调试并检查对象的属性。你可以在你的渲染方法中写一个。也许看看渲染时用户控件中有多少个控件。 (可能是删除或清除控件容器)。
你能发布一些示例代码吗? – cjk 2009-02-24 19:33:03