aspx页面的代码隐藏是否有办法访问修改后的html?
例如,我有一个空的runat ="服务器"在" queue.aspx"
上看起来像这样的无序列表<ul runat="server" id="sortableQueue" class="sortable" >
</ul>
然后我使用codebehind&#34; queue.aspx.cs&#34;
填充它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。
然后我尝试在&#34; queue.aspx.cs&#34;中读取这样更改的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
}
}
不幸的是,这个函数读取html5重新排序之前的html。例如,如果我交换了第1项和第2项的位置,我希望该函数能够写出&#34; 21&#34;。
相反,它会写出&#34; 12&#34;好像什么都没有被修改。无论如何,问题的详细描述,但我愿意接受任何关于如何使我的方法工作的建议,或者实现可重新排序的拖放列表的相同功能的替代方法。
答案 0 :(得分:1)
ASP.net&amp; Web表单仍然使用HTTP的基础知识,通常通过回发到服务器的表单。信息传递回服务器的唯一方法是在HTML表单输入元素或查询字符串中。
即使ASP.net公开了服务器端元素/控件,要将信息持久化回服务器,您还需要使用表单元素。 ASP.net利用<input type="hidden" />
来持久化视图状态等。使用隐藏字段存储有关已重新排序列表的新索引的信息。使用html5sortables sortuptate
事件将所述信息放入隐藏字段。