我在页面上有多个DatePickers,它们使用从控制器传递的模型正确地设置了初始值。
但是,当我选择一个日期时,该值不会存储在Model中,而当尝试在Controller中接收时,该值始终为空。
@Html.TextBoxFor(m => m.FirstDate, Model.FirstDate.ToString(),
new {@class = "input-group datepicker date",
id = "datepicker@i", type = "text",
style = "max-width:123px;min-width:123px" })
JS>
@{var startDate = @Model.SelectedDates[0].EventDate;}
$(".datepicker").datepicker({
startDate: '@startDate',
endDate: '+365D',
weekStart: 1,
beforeShowDay: function (date) {
if (dates.indexOf(formatDate(date)) < 0)
return {
enabled: false
}
else
return {
enabled: true
}
},
format: 'dd-mm-yyyy',
});
传递给控制器的模型具有作为DateTime的FirstDate,但它始终是默认日期。从不设置使用选取器选择的日期。
EDIT>我现在明白了,列表是视图模型的一部分,而不是传递回控制器的列表。有没有一种方法可以在不使用Ajax回调的情况下在视图中构建列表?
我想不出其他方法来存储未知数量的日期选择器的日期。
发布于 2020-06-15 15:20:29
如果有人对如何在不刷新页面和不使用AJAX的情况下处理传递回控制器的未知数量的参数感兴趣,我找到了一个解决方法
我这样定义每个datepicker:
<input type="text" class="input-group datepicker date" name="@pickerReference"/>
可以根据通过Model.YourPickerListDates从控制器反馈的列表来创建这些列表
在将表单提交回控制器时,您可以在返回模型的同时添加IFormCollection form
,而不是将每个选择器硬键入模型或控制器的参数中。
在控制器中,你可以遍历formCollection或者选择每个日期,如下所示:
string value = Convert.ToString(form["pickerReference"]);
我想不出更好的解决方案,因为返回的Model必须具有强定义的值。如果您不想使用formCollection返回值,则可能需要调用Ajax或其他方法。
https://stackoverflow.com/questions/62389594
复制相似问题