如何从汇编DLL加载用户控件?

时间:2015-03-01 10:29:53

标签: c# asp.net webforms

我想从我的" .DLL"加载我的用户控件文件。这是我的代码。 我的用户控件在注册标签设计时工作正常,但在运行时我看到错误。

        // load the assembly
        System.Reflection.Assembly assembly =
        Assembly.LoadFrom( Server.MapPath("~/bin/ActivePage.Coms.DLL"));

        // get the type
        Type t = assembly.GetType(name);

        // create an instance and add it.
        //
        Control c = (Control)Activator.CreateInstance(t);
        if (c != null)
        {
            Response.Write(c.ClientID);
            PlaceHolder1.Controls.Add(c);
        }

但是看到这是错误

Server Error in '/' Application.

对象引用未设置为对象的实例。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

1 个答案:

答案 0 :(得分:0)

当您传递用户控件名称以汇编此行时;

Type t = assembly.GetType(name);

你必须在我的代码中用名称空间示例写出全名:

Type t = assembly.GetType("ASP.uc_contactform_ascx");

我使用此行传递路线数据中的名称:

    string name = Page.RouteData.Values["name"].ToString();

将url usercontrol name更改为full(" ASP.uc_contactform_ascx")后,我的页面工作正常,并从dll assemple中加载运行时用户控件。

在asp.net开发中与我联系。 tehhitech [at] live .com,skype = tarraharshad