zoukankan      html  css  js  c++  java
  • 自定义UserControl的属性为什么不能在设计时显示在属性窗口中

    自定义UserControl的属性为什么不能在设计时显示在属性窗口中
    http://www.cnblogs.com/dudu/archive/2004/03/25/4123.aspx
    Posted on 2004-03-25 10:46 dudu
    解决方法:
        假如你写了一个自定义控件,类名为MyUserControl, 文件名为MyUserControl.ascx, 命名空间为MyWeb.Controls。然后你将MyUserControl拖到一个WebForm上,会自动生成:
    <%@ Register TagPrefix="uc1" TagName="MyUserControl" Src="MyUserControl.ascx" %>
    将上面的语句改为
    <%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
    这样,就会在属性窗口看到你定义的属性。

    问题解决过程:
        这个问题困扰了我很久,以前我只能手动写代码给自己写的UserControl的属性赋值。昨天,我下定决心一定要解决这个问题,在网上找了很多文章,按照文章中的代码作了很多次修改,比如:在类名前加
    [ System.ComponentModel.Designer(typeof(System.Web.UI.Design.ControlDesigner)),
     ToolboxData("<{0}:ImageList runat=\"server\" />") ]
    我总以为是UserControl本身定义的问题,所以把注意力集中在UserControl的代码上, 而这是一个错误的方向,无论我怎么努力,也不能解决问题。后来,我想到.Text中有一个能在设计时显示属性的分页控件,我为何不参考一下,我按照它改写了自己的控件,可放到WebForm上后还是不能看到属性,然后,我查看了WebForm中自动生成的代码, 发现了不同之处,我按照上面的方法改了一下,问题就解决了。而且在UserControl中,不需要对属性作特别的设置, 只要是public属性都会显示在属性窗口中。
        在学习过程中,实践显得多么重要,比如上面的问题,仅仅看看相关文章,你觉得很简单,如果你不写代码去试一下,根本不会发现这个问题。

    看了下面的回复,觉得雨淋淋的问题应该不能成为大问题。其决方法至少可以是:在后台cs代码中手动添加该控件的实例,而一般情况下只要切换.NET网页编辑中的“设计”与“HTML”它自动会向cs添加控件实例。
    以上<@Page src=...>据说只是免除编译,在更改源代码时IIS会自动编译。而写成<@Page Assembly=...>就要手工编译成dll,然后(最安全的做法)重启IIS,这样做的好处是根本不需要将cs文件放在IIS上。

  • 相关阅读:
    postgresql模糊查询json类型字段内某一属性值
    https://127.0.0.1:8080/test?param={%22..报错
    协同过滤算法简单实现
    开源推荐系统Librec中recommender模块算法了解——cf模块
    Python Flask 多环境配置
    Python序列化和反序列化 vs JSON
    Python自定义状态码枚举类
    python带参数装饰器使用
    Python日志配置类
    Python常量工具类
  • 原文地址:https://www.cnblogs.com/huqingyu/p/19401.html
Copyright © 2011-2022 走看看