【发布时间】:2016-04-28 10:36:18
【问题描述】:
我有一个列表,其中的元素可以通过 JQuery 可排序功能重新排序或拖出列表。 当用户按下保存时,引发回发。我需要捕获列表,让 id 仍在列表中,并按顺序进入 html。 我的方法是在每个 ul 标记内添加隐藏字段,以存储列表项的 id,如下所示
<ul>
<li>Item1 <input id="itemID" type="hidden" value="1"></li>
<li>Item2 <input id="itemID" type="hidden" value="2"></li>
...
</ul>
为此,我是WebControl 的子类。在RenderContents 方法中,我将html 渲染为发布的内容。
问题是如何在回发调用中访问控件子级。
因为 JavaScript 改变了列表,Viewstate 没用。
属性 Controls 总是为空。找不到强制解析Innerhtml 甚至获取Innerhtml 的方法。
我在这里错过了什么?
更新: 澄清一下,上面发布的 html 是由 webcontrol 的子类生成的。在我命名为 MyListControl 的服务器控件的代码下方:
[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
public class MyListControl : WebControl {
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public List<String> Itens;
protected override void RenderContents(HtmlTextWriter output)
{
var ul = new HtmlGenericControl("ul");
int order = 0;
if (Itens != null)
foreach (var liText in Itens)
{
var li = new HtmlGenericControl("li");
li.InnerText = liText;
ul.Controls.Add(li);
var input = new HtmlInputHidden() { ID = "Order", Value = order.ToString() };
li.Controls.Add(input);
order++;
}
Controls.Add(ul);
ul.RenderControl(output);
}
}
Because the html is not parsed on post FindControl method can't find anything also.
【问题讨论】:
-
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
标签: c# asp.net system.web.ui.webcontrols