使用c#将单个Int从一个用户控件传递到另一个用户控件
本文关键字:控件 用户 一个 另一个 单个 Int 使用 | 更新日期: 2023-09-27 18:08:28
在一个ASPX页面中有两个用户控件。我所要做的就是在页面加载期间将一个int从一个控件传递给另一个控件。
我已经尝试了这里的几个例子,但没有一个工作-对不起,我的意思是我不能让他们工作!这是我得到的:
违约。ASPX
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ucBottom.varBottomID = ucTop.varBottomID;
}
}
UCTOP
public partial class ucTop : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
int varBottomID = 100;
}
}
UCBOTTOM
public partial class ucBottom : System.Web.UI.UserControl
{
public int varBottomID { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
BottomText.Text = Convert.ToUInt32(varBottomID).ToString();
}
}
没有错误,除了底部文本。文本返回0而不是100。也int varBottomID = 100;表示它已被分配但从未使用(ucTop)。
从这里的一个答案来看,一个UC不知道另一个UC并使用父级传递数据是很好的做法。可惜我不喜欢。
一如既往,任何帮助都将是感激的(但在下面的假人指南格式!)。
在您的主页中,它并没有真正改变任何东西-它将ucBottom.varBottomID
设置为自身。(编辑:似乎已被修复)
在ucTop
中,int varBottomID = 100;
什么也不做——它在函数内部设置了一个变量,这个变量在函数外部是不可见的。
这两个问题的结果是,你永远不会有任何从ucTop
到ucBottom
的沟通。
(顺便说一句,惯例是类名以大写字母开头,实例名以小写字母开头。从代码中很难看出您是试图访问类的静态成员还是实例成员。从这里开始,我假设你有一个ucBottom
控件,这是ucBottom
类的一个实例,ucTop
也是如此。这是唯一的情况下,我看到你的代码,粘贴,将编译没有错误。)
你可能需要类似的东西:
public partial class _Default : Page
{
protected void Page_Load(sender obj, EventArgs e)
{
ucBottom.varBottomID = ucTop.varBottomID; // fix the first issue
}
}
public partial class ucTop : UserControl
{
public int varBottomID { get; set; } // fix the second issue
protected void Page_Load(object src, EventArgs e)
{
varBottomID = 100;
}
}
如果采用这种方法,您还需要选择不同的事件来触发。如果一切都在Load上触发,那么你就有问题了——Load首先在页面上触发,然后在子控件上触发。属性设置不正确。(设置分为三个步骤:ucTop
决定要设置的正确值,_Default
从上到下设置,ucBottom
使用它。你需要这个序列去决定, 设置, 使用为了它的工作正确,但如果所有触发加载,你将结束set, 决定, 使用或set, 使用, 决定)。你可以考虑让_Default
在LoadComplete上做它的事情,让ucBottom
在PreRender上做它的事情。
根据需要修改代码。
public partial class ucTop : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
ucBottom.varBottomID = 100;
}
}
public partial class ucBottom : System.Web.UI.UserControl
{
public int varBottomID { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
BottomText.Text = Convert.ToUInt32(varBottomID).ToString();
}
}
定义一个UserControl
可以访问static
变量的类:
public static class RequiredVars
{
public static int BottomID { get; set;}
}