我刚刚创建了一个 Javascript 函数和一个基于另一个按预期工作的控制器方法。Javascript 值似乎是正确的,但是当它到达控制器时,它变为 0。我尝试从头开始重新执行整个函数,结果相同。
编辑:在控制台日志中, e 具有正确的值。
编辑 2:这就是请求的外观。号码没问题!这与其他方法获取数字的方式相同。
这是 javascript 代码,其中 e 是正确的值(它是帖子 ID):
function toggleArchivar(e) { //i've debugged it and e has the correct value
$.ajax({
type: "POST",
url: "/submissions/togglearchivar/" + e,
success: function (t) {
t.success ? (t.data ? $("#submissionid-" + e + " p.title").prepend('<span title="archivado" class="flair
linkflairlabel" id="archivadoTag">archivado</span>') :
$("#archivadoTag").remove(), $("#toggleArchivar").html("nsfw")) :
$("#toggleArchivar").html(t.error.message)
},
error: function () {
alert("Error al intentar archivar.")
}
}) }
这是控制器方法:
[Authorize]
[HttpPost]
[VoatValidateAntiForgeryToken]
[PreventSpam(5)]
public async Task<ActionResult> ToggleArchivar(int submissionID) //SubmissionID comes with a 0!!!
{
using (var repo = new Repository(User))
{
var response = await repo.ToggleArchivar(submissionID);
return JsonResult(response);
}
}
以我调试并且值匹配的工作为例:Javascript:
function toggleNSFW(e) {
$.ajax({
type: "POST",
url: "/submissions/togglensfw/" + e,
success: function (t) {
t.success ? (t.data ? $("#submissionid-" + e + " p.title").prepend('<span title="Not Safe For Work" class="flair
linkflairlabel" id="nsfwflair">NSFW</span>') :
$("#nsfwflair").remove(), $("#togglensfw").html("nsfw")) :
$("#togglensfw").html(t.error.message)
},
error: function () {
alert("Error al intentar poner NSFW.")
}
}) }
控制器:
[Authorize]
[HttpPost]
[VoatValidateAntiForgeryToken]
[PreventSpam(5)]
public async Task<ActionResult> ToggleNSFW(int submissionID)
{
using (var repo = new Repository(User))
{
var response = await repo.ToggleNSFW(submissionID);
return JsonResult(response);
}
}
如您所见,我的函数是以前的函数的副本。我不知道为什么它会带来这个价值!
