我没有看到你的任何代码,所以我在这里给你一个简单的例子。
首先,为需要传入的值定义一个属性:
public partial class SomeControl : System.Web.UI.UserControl
{
public int AProperty { get; set; }
...
}
那么,从你需要使用用户控件的aspx,首先照常注册:
<%@ Register Src="~/MyControls/SomeControl.ascx" TagPrefix="my" TagName="SomeControl" %>
稍后使用它,并将值传递给属性,如下所示:
<my:SomeControl runat="server" ID="SomeControl1" AProperty="1" />
您还可以从包含控件的aspx 后面的代码中设置该属性,如下所示:
SomeControl1.AProperty = 1;
动态控制
您可以像这样动态创建此控件:
var ctrl = new SomeControl();
ctrl.AProperty = 1;
稍后将这些控件添加到您的aspx 中的<asp:PlaceHolder:
somePlaceHolder.Controls.Add(ctrl);
在回发时(即在下拉列表的 selectedindexchanged 上),该占位符内的所有控件都将消失,但信息仍在您的视图状态中,因此您需要做的就是在同一占位符内重新创建相应的控件,然后视图状态中的旧值将附加到重新创建的控件。