在ASP.NET代码后台访问客户端修改的HTML

Access clientside modified HTML in ASP.NET codebehind

本文关键字:客户端 修改 HTML 访问 后台 ASP NET 代码      更新时间:2023-09-26

aspx页面的codeehind有办法访问修改后的html吗?

例如,我在"queue.aspx"上有一个空的runat="server"无序列表,看起来像这样

<ul runat="server" id="sortableQueue" class="sortable" >
</ul>

然后我使用codeehind"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",就好像什么都没修改一样。

无论如何,对这个问题的描述很长,但我愿意接受任何关于如何使我的方法发挥作用的建议,或者实现可重新排序的拖放列表的相同功能的替代方法。

ASP.net&web表单仍然使用HTTP的基本功能,通常是通过将表单发布回服务器。将信息传递回服务器的唯一方法是在HTML表单输入元素或查询字符串中。

尽管ASP.net公开了服务器端元素/控件,但要将信息持久化回服务器,您需要使用表单元素。ASP.net利用<input type="hidden" />来保持视图状态等。使用隐藏字段来存储关于重新吸收列表的新索引的信息。使用html5sortables sortuptate事件将所述信息放入隐藏字段。