我正在尝试从隐藏元素中获取数据并将其发布到数据库中。 隐藏元素看起来像这样:
<input id="page-order" type="hidden" value="9,0|10,0|11,0|12,0|14,0|15,0|">
正如您所看到的,数据显示如下,它跟踪无序的项目列表中的更改,以逗号分隔的对中的第一个值是MenuID
对中的第二个值ParentID
1}}。
一些背景信息:这是CMS网站的一部分,我目前正在添加一个新页面,允许用户拖动代表其网站中页面的无序列表项并更改顺序在导航菜单中的页面中,您还可以通过将页面拖动到页面下方的边框内来将页面嵌套在另一页面中。
这是展示的图片:
从这张图片中你可以看出订单测试嵌套在锚页面中。
好的回到主要问题。我需要将输入隐藏字段中记录的这些更改保存到我的数据库中。我有以下[HttpPost]
的伪代码:
[HttpPost]
[Authorize(Roles = "Admin")]
public ActionResult Reorder(FormCollection col)
{
//col["SiteId"]
//col["page-order"]
//Reorder
var pageOrders = "1,0|2,0|3,2|4,2|5,0";
var pages = pageOrders.Split('|');
var allPages = PageDataService.LoadPagesForSite(1); //TODO unhardcode site
for (int i = 1; i <= pages.Length; i++)//1 to 5
{
var menuID = int.Parse(pages[i - 1].Split(',')[0]);
int? parentMenuID = int.Parse(pages[i - 1].Split(',')[1]) == 0 ? (int?)null : int.Parse(pages[i - 1].Split(',')[1]);
var page = allPages.FirstOrDefault(p => p.MenuID == menuID);
if (page != null)
{
//Setting the parentID and Ordinal and save to database
}
}
}
单击保存按钮时,将在输入隐藏字段中记录数据。这是代码:
$("#SaveOrderPage").on("click", function () {
var pageOrders = '';
$('.list-group-item').each(function () {
pageOrders += $(this).data('menuid');
if ($(this).parent().parent().hasClass('list-group-item')) {
pageOrders += ',';
pageOrders += $(this).parent().parent().data('menuid');
} else {
pageOrders += ',0';
}
pageOrders += "|";
});
$('#page-order').val(pageOrders);
});
非常感谢任何帮助