【发布时间】:2014-11-11 04:33:52
【问题描述】:
有没有办法让 aspx 页面的代码隐藏访问修改后的 html?
例如,我有一个空的 runat="server" 无序列表,在“queue.aspx”上看起来像这样
<ul runat="server" id="sortableQueue" class="sortable" >
</ul>
然后我使用代码隐藏“queue.aspx.cs”填充它
HtmlGenericControl li_item1 = new HtmlGenericControl("li");
li_item1.InnerText = "Shot Name - 1";
li_item1.Attributes["style"] = "cursor: move";
li_item1.Attributes["data-shotid"] = "1";
sortableQueue.Controls.Add(li_item1);
HtmlGenericControl li_item2 = new HtmlGenericControl("li");
li_item2.InnerText = "Shot Name - 2";
li_item2.Attributes["style"] = "cursor: move";
li_item2.Attributes["data-shotid"] = "2";
sortableQueue.Controls.Add(li_item2);
接下来,允许用户使用html5sortable 对这些列表项重新排序。这可以正常工作,并修改页面的 html。
然后我尝试在“queue.aspx.cs”中读取这样更改的html,以便将它们保存到数据库中。
protected void btnSaveQueue_Click(object sender, EventArgs e)
{
int count = sortableQueue.Controls.Count;
for (int p = 1; p <= count - 1; p++)
{
HtmlGenericControl li_item = (HtmlGenericControl)sortableQueue.Controls[p];
Response.Write(li_item.Attributes["data-shotid"]); //for testing purposes
}
}
不幸的是,这个函数读取的 html 与 html5 重新排序之前一样。例如,如果我交换第 1 项和第 2 项的位置,我希望函数写为“21”。
相反,它写入“12”,就好像没有任何修改一样。
无论如何,问题的描述很长,但我愿意接受有关如何使我的方法起作用的任何建议,或者实现可重新排序的拖放列表相同功能的替代方法。
【问题讨论】:
-
您是在代码开始文件中绑定还是在页面加载事件中添加 li 项?
标签: javascript c# html asp.net html5-draggable