Javascript 为什么我在控制器中得到一个int[]元素,它是0,并且从ajax调用发送null?

Javascript 为什么我在控制器中得到一个int[]元素,它是0,并且从ajax调用发送null?,javascript,c#,asp.net-mvc,asp.net-mvc-3,Javascript,C#,Asp.net Mvc,Asp.net Mvc 3,当表单不包含任何选定项时,它会创建一个表,其中一个ite为0,如何优雅地删除它?在哪里 JS: 此时,当我在控制台$(“#secteursDiffusion”).val()中求值时,我可以看到在$(“#secteursDiffusion”)中选择的项目,OK(结果:[“676”])!当我在控制台中计算$(“#auditesDiffusion”).val()时,该值为null(结果:null),所以一切正常 在控制器中: public ActionResult Search(int[] secte

当表单不包含任何选定项时,它会创建一个表,其中一个ite为0,如何优雅地删除它?在哪里

JS:

此时,当我在控制台$(“#secteursDiffusion”).val()中求值时,我可以看到在$(“#secteursDiffusion”)中选择的项目,OK(结果:[“676”])!当我在控制台中计算$(“#auditesDiffusion”).val()时,该值为null(结果:null),所以一切正常

在控制器中:

public ActionResult Search(int[] secteurs, int[] auditeurs, int[] audites, int[] services)
        {   ...   }
当我在控制器中设置断点时,我收到了一个项目为0的审核(在控制台中评估为null),为什么?你觉得它有多优雅

提前谢谢

编辑:

一个输入的HTML代码:

<select data-placeholder="Ajoutez un ou plusieurs secteurs" id="secteursDiffusion" multiple="multiple" name="secteursDiffusion">
<option value="992379">item55</option>
<option value="993147">item56</option>
<option value="996096">item57</option>
<option value="33033095">item58</option>
</select>

项目55
项目56
项目57
项目58
EDIT2:with int?[] 同样的问题:

尽管该值为
null
但您仍在为
审核传递一些值。由于它不是数组,MVC认为您正在传递一个
int
值,因此将其设置为默认值-
0
(正如Stephen指出的,这是
DefaultModelBinder
的行为)

您需要确保一个数组被传递,因此如果它是
null
,则改为发送
[]
-注意
审核
,然后在控制器操作中变为
null
,而不是空数组,但这比
[0]
更有意义:

$(document).on('click', '#submitButton', function () {
    showLoader();
    $.ajax({
        url: "@Url.Action("Search", "Home")",
        cache: false,
        type: "POST",
        dataType: "html",
        traditional: true,
        data: {
            secteurs: $("#secteursDiffusion").val() || [],
            auditeurs: $("#auditeursDiffusion").val() || [],
            audites: $("#auditesDiffusion").val() || [],
            services: $("#servicesDiffusion").val() || []
        },
        success: function (result) {
            $("#resultPlaceholder").html(result);
        }
    });
});

尽管该值为
null
,但仍为
审核传递一些值。由于它不是数组,MVC认为您正在传递一个
int
值,因此将其设置为默认值-
0
(正如Stephen指出的,这是
DefaultModelBinder
的行为)

您需要确保一个数组被传递,因此如果它是
null
,则改为发送
[]
-注意
审核
,然后在控制器操作中变为
null
,而不是空数组,但这比
[0]
更有意义:

$(document).on('click', '#submitButton', function () {
    showLoader();
    $.ajax({
        url: "@Url.Action("Search", "Home")",
        cache: false,
        type: "POST",
        dataType: "html",
        traditional: true,
        data: {
            secteurs: $("#secteursDiffusion").val() || [],
            auditeurs: $("#auditeursDiffusion").val() || [],
            audites: $("#auditesDiffusion").val() || [],
            services: $("#servicesDiffusion").val() || []
        },
        success: function (result) {
            $("#resultPlaceholder").html(result);
        }
    });
});

尽管该值为
null
,但仍为
审核传递一些值。由于它不是数组,MVC认为您正在传递一个
int
值,因此将其设置为默认值-
0
(正如Stephen指出的,这是
DefaultModelBinder
的行为)

您需要确保一个数组被传递,因此如果它是
null
,则改为发送
[]
-注意
审核
,然后在控制器操作中变为
null
,而不是空数组,但这比
[0]
更有意义:

$(document).on('click', '#submitButton', function () {
    showLoader();
    $.ajax({
        url: "@Url.Action("Search", "Home")",
        cache: false,
        type: "POST",
        dataType: "html",
        traditional: true,
        data: {
            secteurs: $("#secteursDiffusion").val() || [],
            auditeurs: $("#auditeursDiffusion").val() || [],
            audites: $("#auditesDiffusion").val() || [],
            services: $("#servicesDiffusion").val() || []
        },
        success: function (result) {
            $("#resultPlaceholder").html(result);
        }
    });
});

尽管该值为
null
,但仍为
审核传递一些值。由于它不是数组,MVC认为您正在传递一个
int
值,因此将其设置为默认值-
0
(正如Stephen指出的,这是
DefaultModelBinder
的行为)

您需要确保一个数组被传递,因此如果它是
null
,则改为发送
[]
-注意
审核
,然后在控制器操作中变为
null
,而不是空数组,但这比
[0]
更有意义:

$(document).on('click', '#submitButton', function () {
    showLoader();
    $.ajax({
        url: "@Url.Action("Search", "Home")",
        cache: false,
        type: "POST",
        dataType: "html",
        traditional: true,
        data: {
            secteurs: $("#secteursDiffusion").val() || [],
            auditeurs: $("#auditeursDiffusion").val() || [],
            audites: $("#auditesDiffusion").val() || [],
            services: $("#servicesDiffusion").val() || []
        },
        success: function (result) {
            $("#resultPlaceholder").html(result);
        }
    });
});


为什么您的参数是int[]
?您的ajax调用正在使用单个值元素的
.val()
。它应该是
int,而不是
int[]audites
?审核
字符串审核
在控制器操作中…val也使用多个值@StephenMuecke,我在控制器的数组中收到多个val,就像这样。请参阅@Kartikeya:我可以在每个项目上接收多个值,这些值是ListBox,用户可以通过选择多个项目listbox@StephenMuecke:我编辑了第一条注释,您是否希望我在不使用呈现一个字段的HTML的JS库(选中)的情况下进行测试?也许这是因为选择了JS库而导致的错误?你怎么想?为什么你的参数是int[]
?您的ajax调用正在使用单个值元素的
.val()
。它应该是
int,而不是
int[]audites
?审核
字符串审核
在控制器操作中…val也使用多个值@StephenMuecke,我在控制器的数组中收到多个val,就像这样。请参阅@Kartikeya:我可以在每个项目上接收多个值,这些值是ListBox,用户可以通过选择多个项目listbox@StephenMuecke:我编辑了第一条注释,您是否希望我在不使用呈现一个字段的HTML的JS库(选中)的情况下进行测试?也许这是因为选择了JS库而导致的错误?你怎么想?为什么你的参数是int[]
?您的ajax调用正在使用单个值元素的
.val()
。它应该是
int,而不是
int[]audites
?审核
字符串审核
在控制器操作中…val也使用多个值@StephenMuecke,我在控制器的数组中收到多个val,就像这样。请参阅@Kartikeya:我可以在每个项目上接收多个值,这些值是ListBox,用户可以通过选择多个项目listbox@StephenMuecke:我编辑了第一条注释,您是否希望我在不使用呈现一个字段的HTML的JS库(选中)的情况下进行测试?也许这是因为选择了JS库而导致的错误?你怎么想?为什么你的参数是int[]
?您的ajax调用正在使用单个值元素的
.val()
。它应该是
int,而不是
int[]audites
?审核
字符串审核
在控制器操作中…val也使用多个值@StephenMuecke,我在控制器的数组中收到多个val,就像这样。请参阅@Kartikeya:我可以在每个项目上接收多个值,这些值是ListBox,用户可以通过选择多个项目listbox@StephenMuecke:我编辑了第一条注释,是否希望我在不使用呈现注释的JS库(选中)的情况下进行测试