以编程方式创建ASCX实例后,F5可以正常运行,编译也同过,就是不能Publish?!VS2005是不是有毛病?不信大家试一下,看看是不是自己的VS2005也这样?做个ascx,dsclub.ascx
<%@ Control Language="C#" ClassName="OKOK" %><script runat="server"></script><asp:Label ID="Label1" runat="server" Text="OKOK"></asp:Label>
然后在一个aspx页面中
<%@ Reference Control="~/dsclub.ascx" %>
    protected void Page_Load(object sender, EventArgs e)
    {
        ASP.OKOK ok = new ASP.OKOK();
        this.Controls.Add(ok);
    }这样的运行真的没问题!但是,大家试一下是不是只要Publish Web Site,然后选中保持更新,就报错?报没有引用程序集?
有没有人能解决这个问题?

解决方案 »

  1.   

    以编程方式创建ASCX实例~~
    ASP.OKOK ok = new ASP.OKOK();
    ------------------------------你这种方法是错误的!用户控件是从后台编码类继承的.要加载用户控件,你需要实例化用户控件对应的实际类,而实际类是在运行期间确定的,不可能在编译时确定它, 更不能加载基类来实现!
    要用以下方法:
    Control c = Page.LoadControl( "path" );//ASP.OKOK ok = (ASP.OKOK)c; //需要的话进行类型转换,以访问公共属性或方法this.Controls.Add(ok);
      

  2.   

    TO:jianyi0115(随意)
    用过ASP.NET2.0的说,这是可以的!记得在哪个老外的网上看过……
    当然,用LoadControl很规矩!不过,即使用LoadControl,也会有同样的问题!
    ascx文件不一定Code Beside,但是如果引用用户控件的aspx文件code-inline就能Publish,但是只要code beside就不行了!(Allow update)不信你试试!
      

  3.   

    只要在aspx的aspx.cs文件中出现ASP.xxxx在发布时都会报错!!!!怎么解决呀???
    老大们呀!!!
      

  4.   

    http://www.blogcn.com/user46/hunter32/index.html
    asp.net中如何传递值给用户控件? [原]