我有一个允许用户排序的任务列表,目前我正在处理从一个容器到另一个容器的拖放。
当拖放工作时,我无法触发jQuery帖子。不确定这里发生了什么。
以下是我目前正在使用的jQuery:
<script type="text/javascript">
$(function() {
$(".sortable").sortable({
connectWith: '.connectedSortable',
cursor: 'move',
items: '.queueItem',
receive: function(event, ui) {
//Extract column num from current div id
var stageId = $(this).attr("id").replace("stage", "");
var taskId = $(ui.item).attr("id").replace("task", "");
$.ajax({
url: '/Task/EditStage',
type: 'POST',
data: { 'taskId': taskId, 'stageId': stageId }
});
}
}).disableSelection();
});
</script>
我的控制器操作方法如下:
[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult EditStage()
{
Task task = this.TaskRepository.GetTask(
int.Parse(this.Request.QueryString["taskId"]));
Stage stage = this.StageRepository.GetStage(
this.Request.QueryString["stageId"]);
task.StageId = stage.StageId;
this.TaskCommentRepository.Save();
return this.Content(string.Format("The stage for Task {0} has been changed to {1}", task.TaskId, stage.Name));
}
用户已获得授权,只是好奇我能忽略的是什么?展望未来,我如何测试这个以查看挂断是什么?
提前致谢!
答案 0 :(得分:4)
您正尝试从查询字符串中获取taskID和stageID,但是您将它们作为POST发送,这意味着它们位于邮件正文中。将方法签名更改为:
public ActionResult EditStage(int taskID, intstageID)
并改为访问参数。
或者,只需将JQuery AJAX方法更改为GET,然后将操作更改为允许获取。
或者,将值附加到URL,如
var url = '/Task/EditStage?taskID=' + taskID + "&instageID=" + instaveID;
并在没有数据的AJAX调用中使用该url变量。