【发布时间】:2011-10-28 18:07:29
【问题描述】:
我在这里遇到了一个奇怪的问题。我这样创建了一个自定义控件:
public class Textbox : System.Web.WebControls.Placeholder
{
if( [certain criteria are met])
this.Controls.Add(new System.Web.WebControls.Textbox());
}
在 Visual Studio 的设计器模式下工作时,每当我向页面添加一个文本框时:
<myControls:Textbox id="txtTest" runat="server" />
Visual Studio 习惯于将我的标记更改为以下内容:
<myControls:Textbox id="txtTest" runat="server" >
<asp:Textbox runat="server" />
</myControls:Textbox>
这会更改最终的输出标记,以便出现两个文本框。有没有办法阻止 Visual Studio 这样做?
编辑: 根据要求,这是页面标记
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="TestApp.Test" %>
<%@ Register Assembly="MyControls.WebControls" Namespace="MyControls.WebControls" TagPrefix="myControls" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<table>
<tr>
<td>
<asp:Label ID="lblTest" runat="server">Test Label:</asp:Label>
<myControls:TextBox ID="txtTest" runat="server" Width="80px"></myControls:TextBox>
</td>
</tr>
</table>
</asp:Content>
【问题讨论】:
-
您的用户控件可能有问题。
-
我不这么认为,VS正在编译页面并确定要添加文本框,所以它添加它,但是可能会出现不添加文本框的情况。
-
发布用户控件的标记
-
抱歉,不是用户控件。只是一页。不过,我会为此发布标记。
-
看起来您正在扩展 PlaceHolder,但您的控件称为 TextBox。这是为什么呢?
标签: asp.net .net visual-studio-2010 custom-controls markup