gpt4 book ai didi

c# - 如何在asp.net mvc和C#中使用序列化数据

转载 作者:行者123 更新时间:2023-11-30 12:35:53 25 4
gpt4 key购买 nike

我正在使用 jQuery UI sortable 对 DOM 中的列表进行排序。我成功地有一个 ajax 函数将此字符串发布到我的 mvc 操作:

list[]=2&list[]=3&list[]=28&list[]=1

我想弄清楚如何将这个序列化的数字列表放入 List<int> 中所以我实际上可以从 C# 访问它们。

我该怎么做?我已经尝试过这种方法:

    [HttpPost]
public string RoleTierUpdate( string[] form)
{
StringBuilder sb = new StringBuilder();

foreach (var item in form)
{
sb.AppendFormat("id: {0}<br />", item);
}

return sb.ToString();
}

我想我可以将字符串数组转换为整数列表。但这返回了以下输出:

    id: 2
id: ,
id: 3
id: ,
id: 2
id: 8
id: ,
id: 1

是否有更简单的方法将这些数据放入 int 列表中?

编辑

这是执行 ajax post 的代码:

<script type="text/javascript">
// Sortable
$(document).ready(function () {
$("#sortThis").sortable({
handle: '.handle',
update: function () {

// get new order
var order = $('#sortThis').sortable('serialize');

// excecute ajax for db update
$.post(
"/find/AdminMember/RoleTierUpdate/",
order,
function (data) {
$("#info").html(data);
}
);

$("#info2").html(">>" + order + "<<");
}
});

});
</script>

order包含我上面显示的字符串。

编辑2

将 Controller 更新为:

    [HttpPost]
public string RoleTierUpdate( List<int> list, MemberData md) // change to List<int> list
{
StringBuilder sb = new StringBuilder();

if (list != null) // added check for null
{
foreach (var item in list)
{
sb.AppendFormat("id: {0}<br />", item);
}
}
else {
sb.Append("form is null");
}

return sb.ToString();
}

将 ajax 更新为:

    $(document).ready(function () {

jQuery.ajaxSettings.traditional = true; // added

$("#sortThis").sortable({
handle: '.handle',
update: function () {

// get new order
var order = $('#sortThis').sortable('serialize');

// excecute ajax for db update
$.post(
"/find/AdminMember/RoleTierUpdate/",
order,
function (data) {
$("#info").html(data);
}
);

$("#info2").html(">>" + order + "<<");
}
});

});

输出结果是:

form is null

最佳答案

看来是 MVC 的模型绑定(bind)器不愿意绑定(bind)字符串的原因

list[]=2&list[]=3&list[]=28&list[]=1 

List<int> list是因为按键中的“[]”。我将这个 javascript 添加到我的 jQuery 中:

// get new order
var order = $('#sortThis').sortable('serialize');
order = order.replace(/\[\]/gi, "")

一旦我从按键中取出“[]”,一切都很好。该操作返回了这个结果:

id: 2
id: 3
id: 28
id: 1

这正是我所需要的。模型绑定(bind)到 List<int>效果很好。

关于c# - 如何在asp.net mvc和C#中使用序列化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com