从生成的面板访问多个值

时间:2010-08-13 16:56:13

标签: c# asp.net html

我有一些逻辑循环并将一个新的Panel控件添加到另一个控件:

for (int segmentIndex = 0; segmentIndex < segments.Length; ++segmentIndex)
{
    holder.Controls.Add(new Panel() { Width = Unit.Percentage(segments[segmentIndex] / segmentsSum * 100), CssClass = String.Format("segment segment-{0}", segmentIndex) });
}
container.Controls.Add(holder);  

这很好用,但我需要在循环中的每个面板上存储一些值。一旦控件在页面上呈现,我需要能够在c#和javascript中访问这些值。实现这一目标的最佳方法是什么?我之前在某些控件上使用过Tag属性,但是Panel没有一个。

非常感谢

2 个答案:

答案 0 :(得分:1)

听起来你需要在Panel中添加标记,这是正确的吗?如果是这样,您可以向Panel控件的Controls集合添加一个控件,例如Label或LiteralControl。

以下(未经测试的)代码说明了这一点:

for (int segmentIndex = 0; segmentIndex < segments.Length; ++segmentIndex)
{
    var p = new Panel() { ... };

    var innerContent = new LiteralControl("<p>Hello, World!</p>");

    p.Controls.Add(innerContent);

    holder.Controls.Add(p);
}
container.Controls.Add(holder);  

或者,您可以添加标签,按钮......而不是LiteralControl。

答案 1 :(得分:0)

在面板中添加HiddenField。它将以HTML格式呈现为<input type="hidden" />,因此它对您的服务器代码以及您的javascript都是不可见的。

LiteralControl innerContent = new LiteralControl("<p>Hello, World!</p>");
HiddenField hiddenContent = new HiddenField() { ID = "hiddenContent", Value = "My hidden content" };
p.Controls.Add(innerContent);
p.Controls.Add(hiddenContent);