Javascript 为什么我在控制器中得到一个int[]元素,它是0,并且从ajax调用发送null?
当表单不包含任何选定项时,它会创建一个表,其中一个ite为0,如何优雅地删除它?在哪里 JS: 此时,当我在控制台$(“#secteursDiffusion”).val()中求值时,我可以看到在$(“#secteursDiffusion”)中选择的项目,OK(结果:[“676”])!当我在控制台中计算$(“#auditesDiffusion”).val()时,该值为null(结果: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
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库(选中)的情况下进行测试