将变量传递到页面控制

时间:2012-11-13 11:07:51

标签: c# asp.net .net

我正在动态地将用户控件加载到页面上。我通常是一个vb.net的人,通常可以通过,但这让我很难过。我正在尝试在加载之前将变量从页面传递给控件。

Heres是我称之为控件的地方:

    Control webUserControl = (Control)Page.LoadControl("~/controls/carousel-guards.ascx");

    phGuardsList.Controls.Add(webUserControl);

我已将以下属性放在carousel-guards.ascx:

public String PostCode
        {
            get
            {
                return this.PostCode;
            }
            set
            {
                this.PostCode = value;
            }
        }

但我似乎没有可用的webUserControl.PostCode。

任何帮助都将非常感激

编辑 - 当然,我必须引用控件。傻我!但是,我不能让我用carousel_guards调用它:Error 96 The type or namespace name 'carousel_guards' could not be found (are you missing a using directive or an assembly reference?) C:\Development\Guards247\g247 Test\FindGuard.aspx.cs 197 13 g247 Test

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace g247_Test.controls
{
    public partial class carousel_guards : System.Web.UI.UserControl
    {

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public String PostCode
        {
            get
            {
                return this.PostCode;
            }
            set
            {
                this.PostCode = value;
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您需要使用页面的班级名称才能工作。

var webUserControl = (carousel_guards)Page.LoadControl("~/controls/carousel-guards.ascx");

// now works
webUserControl.PostCode = "17673";
phGuardsList.Controls.Add(webUserControl);

如果你没有包含控件的引用而没有找到你可以在aspx上插入的类的名称

<%@ Reference Control="~/controls/carousel-guards.ascx" %>

或者只是将其拖放到页面内,进行引用,然后删除实际控件,因为它使其动态化。

答案 1 :(得分:0)

您无法从控件访问该属性,因为您正在将加载的控件转换为Control。您应该将其强制转换为您的控件类型。如果您的Control类名称为CarouselGuards,那么您可以执行以下操作:

CarouselGuards webUserControl = (CarouselGuards)Page.LoadControl("~/controls/carousel-guards.ascx");

然后您可以访问该属性。

webUserControl.PostCode = "123";

答案 2 :(得分:0)

使用转换为您的控件类型CarouselGuards而不是Control

CarouselGuards webUserControl = (CarouselGuards)Page.LoadControl("~/controls/carousel-guards.ascx");
webUserControl.PostCode = "XXXX";

作为旁注,不要忘记对象的检查空控制。