2009-02-24 71 views
2

我正在使用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" /> 
+0

你能发布一些示例代码吗? – cjk 2009-02-24 19:33:03

回答

3

如果您在注册页面这样

<%@ Register TagPrefix="uc" TagName="SomeCustomControl" Src="~/PathTo/TestControl.ascx" %> 

顶部的控制(关键点在这里是SRC =“...”部分)

则加价和控件TestControl.ascx将可见并可用。如果仅指定控件的名称空间,例如在web.config <页面>指令(或页面顶部)中,则仅使用代码隐藏,并且忽略代码前(.ascx)中的任何标记

0

是否有用户控制影响的任何代码按钮的可见性?

用户控件的其余部分是否显示,还是只包含按钮?如果它只是一个按钮,那么整个用户控件可能无法正确渲染。将一些文本添加到用户控件中作为测​​试,以确保它只是不起作用的按钮,而不是整个用户控件。

您也可以尝试启用该页面的跟踪。用户控件和按钮应显示在控件层次结构列表中。如果他们不这样做,那么一个或两个都不能正确渲染。

0

此页面和控件是否在标准的默认应用程序中?有没有可能web.config或machine.config对你的UserControl有一些影响?也许是一个HttpModule?

除了从“默认”网站设置中检查外,您还可能需要进行一些调试并检查对象的属性。你可以在你的渲染方法中写一个。也许看看渲染时用户控件中有多少个控件。 (可能是删除或清除控件容器)。

相关问题