【问题标题】:ASP.NET- Instantiate a Web User Control in App_Code classASP.NET- 在 App_Code 类中实例化 Web 用户控件
【发布时间】:2008-10-08 14:11:34
【问题描述】:

文件:

网站\控件\map.ascx

网站\App_Code\map.cs

我想在 map.cs 中创建 map.ascx 的强类型实例

通常,在 aspx 中,您会添加一个

谢谢!

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    通常,我会做这样的事情(假设您的类型是“地图”并且您的 .ascx 文件中有适当的“继承”声明):

    Map map = (Map)LoadControl("~/Controls/map.ascx");
    

    【讨论】:

    • 这不起作用。 “地图”类型在 App_Code 中不可用。与 asp.net 如何编译控件有关。这就是我要求 aspx 中的
    • 在这种情况下,我通常会将代码隐藏文件(如 Map.ascx.cs)移动到 App_Code 文件夹中。
    • 瑞安 - 谢谢。尽管该站点无法编译,因为代码隐藏是指来自 ascx 代码的控件。例如:icon.ImageUrl = imageUrl;错误:当前上下文中不存在名称“图标”
    • 您可以在您的类中创建一个受保护的成员变量:例如“受保护的图像图标”(其中“图像”是您的其他类型...)。
    • 没问题,很高兴能帮上忙。 :-)
    【解决方案2】:

    Website\Controls 中是否有 map.ascx.cs 文件?如果是这样,请将其移至 App_Code。请注意,您可能必须将 .ascx 文件中的 CodeFile 属性更新为 ~\App_Code\map.ascx.cs。 或者,由于控件是部分类,您可以在 ~\App_Code\map.cs 中创建代码:

    public partial class controls_Map : UserControl
    {
        protected void Page_Load( object sender, EventArgs e )
        {
             ...code here....
        }
    }
    

    并从controls目录下的map.ascx.cs文件中移除所有方法。

    【讨论】:

    • 同意。我没有提到将 .ascx.cs 文件也移动到 App_Code。
    • 关闭-我不得不将 page_load 等方法移到 ascx 文件中,但现在我在访问方法/公共属性中的 Viewstate 时遇到问题:public Guid placeID { get { return (Guid)ViewState[ “地点ID”]; } set { ViewState["placeID"] = value; } } Viewstate 无法识别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多