0

有没有办法让 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”,就好像没有修改任何内容一样。

无论如何,对问题的详细描述,但我愿意接受有关如何使我的方法起作用的任何建议,或者是实现可重新排序的拖放列表相同功能的替代方法。

4

1 回答 1

1

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

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

于 2014-11-11T05:24:31.390 回答