我在asp.net MVC控制器的方法中使用自定义参数名称而不是// POST: Admin/Pages/ReorderPages
[HttpPost]
public void ReorderPages(int[] id)
{
using (Db db = new Db())
{
//Set Initial count
int count = 1;
//Declare PageDTO
PageDTO dto;
//Set sorting for each page
foreach (var pageId in id)
{
dto = db.Pages.Find(pageId);
dto.Sorting = count;
db.SaveChanges();
count++;
}
}
}
时出现问题。
我的工作方法是:
$("table#pages tbody").sortable({
items: "tr:not(.home)",
placeholder: "ui-state-highlight",
update: function () {
var pageids = $("table#pages tbody").sortable("serialize");
var url = "/Admin/Pages/ReorderPages";
$.post(url, pageids, function (data) {
});
}
});
我的ajax电话是:
id
现在,当我使用不同的param而不是null
时,我在param中得到routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name:"CustomRoute",
url:"{controller}/{action}/{ids}",
defaults:new { controller = "Pages", action = "ReorderPages" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
值。我还添加了新的路线,如下所示:但问题仍然存在。
Q
我花了很多时间研究,但找不到确切的解决方案。
答案 0 :(得分:0)
为什么不使用
var pageids = $("table#pages tbody").sortable("serialize");
$.ajax({
url: "/Admin/Pages/ReorderPages",
data: { id: pageids }
})
.done(function(response) {
alert("works");
});
.fail(function(response){
alert("failed because of..");
}
查看Ajax
来电和承诺。它的工作非常好,这种方式无需使用路由。如果仍未通过ID,那么您debug
通过您的代码,但在这种情况下,问题出在var pageids = var pageids = $("table#pages tbody").sortable("serialize");
行
如果你真的想坚持自己的方式。使用此
$.post(url, { newParameter : pageids }, function (data)
在此之后,您可以在ActionMethod
public void ReorderPages(int[] newParameter)