发表评论
昨天我也刚好碰到了类似问题,和你的问题刚好相反
自定义一个Web user Control 设计时添加一个Button但是采用<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>添加控件时代码 this.button1.text =”"asdb”";中提示未将对象引用到实例。然而换成<%@ Register TagPrefix="uc1" TagName="MyUserControl" Src="MyUserControl.ascx" %>这种方式就不会出现错误。不知道这是为啥。
我试了一下,果然会出现你所说的问题。但有个更好的解决方法:让这两行并存,即
<%@ Register TagPrefix="uc1" TagName="MyUserControl" Src="MyUserControl.ascx" %>
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
不好意思,我原来的解决方法也是有问题,正确的方法应该是增加一行,而不是修改原来@ Register 。
Namespace="MyWeb.Controls"要改成你的usercontrol所在的命名空间。
我将命名空间改成你的 MyWeb.Controls
定义了f_left 属性.
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
<%@ Register TagPrefix="uc1" TagName="aaa" Src="aaa.ascx" %>
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls"%>
好像在属性窗口上看不到.我以前都是手工去写值给它赋值的
<%@ Register TagPrefix="uc1" TagName="aaa" Src="aaa.ascx" %>
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls"%>
应该这样写:<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
<%@ Register TagPrefix="uc1" TagName="aaa" Src="aaa.ascx" %>, 你重启一下VS.NET再试试。
我还是不是,我是assembly 出错,
发个代码给我吧 8926304aaa@21cn.com
不好意思, 雨玲珑的问题并没有解决, 当时没有重启VS.NET, 小春的问题正是由于用了两行@ Register。要显示属性, 还是应该这样<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>,而且建议将uc1改成其他的名称, 不然就无法将usercontrol再拖到WebForm上。 但这样设置就会出现雨玲珑遇到的问题。不知什么原因?
那还有什么方法吗?
像自定义控件一样,为什么这个在自定义控件里不起作用呢?
System.ComponentModel
<browsable(False)> Public Property lblLeftText() As String
这样子应该是能显示出属性的,为什么不行?
期待!
<browsable(true)> Public Property lblLeftText() As String
我也遇到过这个问题,就是在codebehind里面用this.usercontrol1.visible不能用,.visible属性不能显示?
assembly 出错是因为你的 名字取得有问题,加个后缀就可以了!不信你试试!
如果真是这样则的确是个好消息,我在这个问题上也摸索了很久不得要领。在csdn上发现了这里的链接,没等试成就高兴的急忙散了分。
我按照你的方法试了N+1次了,仍然未见其属性显示在属性窗口中。我用的是vs2003.
麻烦你发一个已实现的代码好吗?手工填写属性实在很烦哪。
牛兄还是贴个源码给看看啊,我除了4个每个控件都有的属性看的到,自定义的属性一个也没看见。
呵呵,这个问题有点怪。
在HTML视图中把这三个Page指令的按如下顺序排列
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="MyWeb.Controls.WebForm1" %>
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
<%@ Register TagPrefix="uc1" TagName="aaa" Src="aaa.ascx" %>
别点保存,然后转换到视图,就可以在属性窗口看到控件的属性了。
不过保存好后,HTML视图中的三个Page指令的顺序不是按上述排列,属性又看不到了。:(。但再按上面顺序把PAGE指令调整好,又可看到属性了。
这是什么原因啊?哪个老大能不能说说其中的原因?
还有:如<%@ Register TagPrefix="uc1" TagName="aaa" Src="aaa.ascx" %> 大家可看看会出什么效果!
现在工作忙,乱写了这点东东。
QQ:14252055 MSN:wilsonchen1999@hotmail.com
上面有句写错:
还有:如把这句去掉<%@ Register TagPrefix="uc1" TagName="aaa" Src="aaa.ascx" %> 大家可看看会出什么效果!
(控件好象被load两次)
为这件事情整整浪费了我半天加一个晚上,简单办法就是:
page_load前一行加上(C#):
protected yourusercontrol1 yourusercontrol11
绝对有效,不用改造html,更不会、、、、、
相信MS没那么弱智吧。
VB为
protected yourusercontrol11 as yourusercontrol1
高手,你们好,你们所谈的属性是指自定义控件的绑定等属性,还是指其中的web控件的属性, 我遇到的问题是:为什么自定义控件中的部分web控件在代码中看不到声明?请赐教!
为什么我按以上步骤做,出现不存在 Manager.controls的错误?
谢谢!
dudu:这样搞到底能不能行,我就没成功过,别把大家撂在这儿不管了,能否给个切实可行的办法,就这个样子也太吊大家的胃口了,急出毛病来你管哪?
剛剛使用發現了這個問題,按照Dudu的方法,一切OK!
DUDU的说法不对,只需要一行就行了
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
要注意Namespace和Assembly的设置,你的控件如果有特殊的命名空间,则要设置好,Assembly一般是web应用程序的命名空间,例如myweb,如果控件和应用程序都在同一个命名空间,则设置成一样。
而且控件要经过编译,里面的属性才能在属性窗口显示出来,可以用重新生成工程来编译程序。
注意一定要是 属性 才能显示出来,一般的public是不能显示出来的,要使用get和set。
欢迎大家和我讨论.net的问题,我的blogs是:
http://blog.csdn.net/delphier
http://www.cnblogs.com/wwwljx
#27楼 [
楼主]2005-01-26 13:59 |
@星
谢谢你!
我的方法是有问题。
@星
按你的做法,属性是能够显示出来,但是访问网站的时候出错,错误是namespace是意外属性
我问一下,命名空间的一些设置问题,比如怎么样修改系统默认生成的名字,还有命名控件的层次关系怎么来弄?
Assembly是组件名称,也即你编译后的dll的名称,
什么命名空间,乱讲.
TagPrefix是标记名称,如<mc:class名称>
Namespace 控件所属命名空间