我有一些逻辑循环并将一个新的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没有一个。
非常感谢
答案 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);