动态添加用户控件中碰到的问题

 今天在做一个论坛回复的模板的时候,碰到了一些问题。我是在WebUserControl中,很简单的,我就添加了<asp:Lable>和<asp:TextBox>服务器控件,但是我在Music.aspx中使用这个WebUserControl的时候,编译的时候,弹出了如下错误:

类型"TextBox"的控件"ctl01_TextBox1"必须放在具有 runat=server的窗体标记内。

原来在Music.aspx在处理WebUserControl控件的时候,是以Form的形式,提交给服务端,再由服务端处理相应的事件。但我们知道,在用户自定义控件中,并不能包含有<html>、<body>和<form>元素,因此编译的时候会有该错误。显然我们不可以直接在WebUserControl中增加一个<form>标签。我们知道,ASP.NET 2.0服务器控件(HTML服务器控件和Web服务器控件)是否必须需要放在<form runat=server></form>的标记之中,可以根据需要进行设置,大多数情况下,对于只用来进行界面显示的控件、并且不需要处理事件的控件,可以不放在<form runat=server></form>之间,对于大多数控件来说,是要在服务器端进行事件处理和获得某些返回值的,因此需要放在<form runat=server></form>之间。因此,我们可以在用户控件中直接拖放不需要事件处理的控件,而换成拖放一个html服务器控件来代替,把上面的<asp:TextBox>换成<textarea>就可以了。对于其余更好的解决方法,有待发现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值