Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
控制器从Javascript post接收错误的参数值_Javascript_Asp.net Mvc - Fatal编程技术网

控制器从Javascript post接收错误的参数值

控制器从Javascript post接收错误的参数值,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我刚刚创建了一个Javascript函数和一个控制器方法,它基于另一个按预期工作的函数和方法。Javascript值似乎是正确的,但当它到达控制器时,它被更改为0。我尝试从头开始重新执行整个函数,但结果相同 编辑:在控制台日志上,e具有正确的值 编辑2:这是请求的外观。号码没问题这与另一个方法获取数字的方式相同 这是javascript代码,其中e是正确的值(它是post ID): 函数toggleArchivar(e){//我已经对它进行了调试,并且e具有正确的值 $.ajax({ 类型:“

我刚刚创建了一个Javascript函数和一个控制器方法,它基于另一个按预期工作的函数和方法。Javascript值似乎是正确的,但当它到达控制器时,它被更改为0。我尝试从头开始重新执行整个函数,但结果相同

编辑:在控制台日志上,e具有正确的值

编辑2:这是请求的外观。号码没问题这与另一个方法获取数字的方式相同

这是javascript代码,其中e是正确的值(它是post ID):

函数toggleArchivar(e){//我已经对它进行了调试,并且e具有正确的值
$.ajax({
类型:“POST”,
url:“/submissions/togglearchivar/”+e,
成功:功能(t){
t、 成功?(t.data?$(“#submissionid-”+e+“p.title”)。前置('archivado'):
$(“#archivadoTag”).remove(),$(“#toggleArchivar”).html(“nsfw”):
$(“#toggleArchivar”).html(t.error.message)
},
错误:函数(){
警报(“错误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);
     }
 }
[授权]
[HttpPost]
[VoatValidateAntiForgeryToken]
[第(5)款]
公共异步任务ToggleArchivar(int submissionID)//submissionID附带0!!!
{
使用(var repo=新存储库(用户))
{
var响应=等待回购ToggleArchivar(提交ID);
返回JsonResult(响应);
}
}
例如,我调试的工作表,其值匹配: 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.")
         }
     }) }
函数toggleNSFW(e){
$.ajax({
类型:“POST”,
url:“/submissions/togglensfw/”+e,
成功:功能(t){
t、 成功?(t.data?$(“#提交ID-”+e+“p.title”)。前置('NSFW'):
$(“#nsfwflair”).remove(),$(“#togglensfw”).html(“nsfw”):
$(“#togglensfw”).html(t.error.message)
},
错误:函数(){
警报(“错误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);
     }
 }
[授权]
[HttpPost]
[VoatValidateAntiForgeryToken]
[第(5)款]
公共异步任务ToggleNSFW(int submissionID)
{
使用(var repo=新存储库(用户))
{
var响应=等待回购ToggleNSFW(提交ID);
返回JsonResult(响应);
}
}

如您所见,我的函数是以前函数的副本。我不知道为什么会有这样的价值

类型变量
int
的默认值为0。因此,由于
submissionID
未绑定,因此变量具有默认值

检查
RouteConfig
(通常在
App\u Start
文件夹中提供)。可能有为
ToggleNSFW
操作编写的路由,但没有为您的操作-
ToggleArchivar
编写路由

添加以下路线并检查其是否有效:

    routes.MapRoute(
        name: "ToggleArchivar",
        url: "{controller}/{action}/{submissionID}",
        defaults: new { controller ="YourControllerName", action = "ToggleArchivar", submissionID = UrlParameter.Optional }
    );
将“YourControllerName”名称替换为控制器的实际名称


另一个选项是将
submissionID
参数重命名为
id
,以便默认模型绑定器将绑定该值。

您是否尝试了console log e值?是的,它是正确的值RouteConfig中有什么?哦,哇,我想这是我缺少的!我无法从办公室访问数据库,但我一到家就会检查!
    routes.MapRoute(
        name: "ToggleArchivar",
        url: "{controller}/{action}/{submissionID}",
        defaults: new { controller ="YourControllerName", action = "ToggleArchivar", submissionID = UrlParameter.Optional }
    );