【发布时间】:2025-12-23 09:20:12
【问题描述】:
我正在通过 jquery post 向 ASP.NET 控制器发送数据的噩梦。这是 JSON.stringify 后数据的样子:
[{"scheduleTaskID":"203","task":"Permit","baselineDate":"4/6/2005 8:00:00 AM","scheduledDate":"4/6/2005 8:00:00 AM","actualDate":"4/6/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"195","task":"Office Files","baselineDate":"7/13/2005 8:00:00 AM","scheduledDate":"7/13/2005 8:00:00 AM","actualDate":"7/13/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"196","task":"Foundation","baselineDate":"7/27/2005 8:00:00 AM","scheduledDate":"7/27/2005 8:00:00 AM","actualDate":"8/13/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"197","task":"Framing","baselineDate":"8/5/2005 8:00:00 AM","scheduledDate":"8/5/2005 8:00:00 AM","actualDate":"8/23/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"198","task":"Finishes Exterior","baselineDate":"8/26/2005 8:00:00 AM","scheduledDate":"8/26/2005 8:00:00 AM","actualDate":"9/14/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"199","task":"Drywall","baselineDate":"9/2/2005 8:00:00 AM","scheduledDate":"9/2/2005 8:00:00 AM","actualDate":"9/16/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"200","task":"Flooring","baselineDate":"9/1/2005 8:00:00 AM","scheduledDate":"9/1/2005 8:00:00 AM","actualDate":"9/20/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"201","task":"General Finish","baselineDate":"9/12/2005 8:00:00 AM","scheduledDate":"9/12/2005 8:00:00 AM","actualDate":"","finishedDate":"","selected":"on"},{"scheduleTaskID":"202","task":"Final PDI","baselineDate":"10/11/2005 8:00:00 AM","scheduledDate":"10/11/2005 8:00:00 AM","actualDate":"","finishedDate":"","selected":"on"},{"scheduleTaskID":"203","task":"Permit","baselineDate":"4/6/2005 8:00:00 AM","scheduledDate":"4/6/2005 8:00:00 AM","actualDate":"4/6/2005 8:00:00 AM","finishedDate":"","selected":"on"},{}]
这就是我尝试传递该数据的方式:
$.post("/api/update/", JSON.stringify( array ), alert('success'), 'json');
这是我的 ASP.NET API 控制器:
[HttpPost]
public dynamic Post(List<CellModel> cells)
{
}
这就是 CellModel:
public class CellModel
{
public string scheduleTaskID { get; set; }
public string task { get; set; }
public string baselineDate { get; set; }
public string scheduledDate { get; set; }
public string actualDate { get; set; }
public string finishedDate { get; set; }
public bool selected { get; set; }
}
当我在public dynamic Post(List<CellModel> cells) 之后在控制器中放置一个断点时,它说单元格是cells Count = 0...我在我的帖子调用后放置return false; 以查看网络调用,它说状态代码是 301 永久移动:
这就是我获取这些数据的方式:
$("#form").submit(function (event) {
var array = [];
$('#form > table > tbody > tr').each(function (elem) {
var item = {
scheduleTaskID: $(this).find("td > #scheduleTaskID").val(),
task: $(this).find("td > #task").val(),
baselineDate: $(this).find("td > #baselineDate").val(),
scheduledDate: $(this).find("td > #scheduledDate").val(),
actualDate: $(this).find("td > #actualDate").val(),
finishedDate: $(this).find("td > #finishedDate").val(),
selected: $(this).find("td > #selected").val(),
};
array.push(item);
});
$.post("/api/update/", JSON.stringify(array), alert('success'), 'json');
return false;
});
【问题讨论】:
-
根据发布的代码,您要发布的 URL 是
update,但端点是Post。此外,您似乎有多个具有相同 ID 的元素。这在 HTML 中是一件坏事。 -
是的,多个元素具有相同的 id,我需要以这种方式传递它
-
我也不明白 Post 方法是如何被调用的。看起来数据应该发布到“更新”方法...
-
它是一个 api 控制器,因此 url 应该看起来像 /api/
/ 如果放入方法名称或取出它,我会得到相同的结果。控制器称为 UpdateController...只有更新应该在 url 中 -
>net web api 使用魔术词表示 crud 。如果方法以动词开头,那么它被认为是动词 public Task
标签: javascript c# jquery asp.net asp.net-mvc