2009-02-24 98 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?

除了從「默認」網站設置中檢查外,您還可能需要進行一些調試並檢查對象的屬性。你可以在你的渲染方法中寫一個。也許看看渲染時用戶控件中有多少個控件。 (可能是刪除或清除控件容器)。

相關問題