作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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
包含我上面显示的字符串。
将 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/
我是一名优秀的程序员,十分优秀!