【问题标题】:Access clientside modified HTML in ASP.NET codebehind在后面的 ASP.NET 代码中访问客户端修改的 HTML
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 完美。这无疑是最好的方法,我不知道为什么我没有想到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 2023-04-08
相关资源
最近更新 更多