我有一个列表,其中的元素可以通过 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.