.net - 无法从 .Net Bootstrap Datepicker 中的 DatePicker 控件的动态数量中检索日期列表
问题描述
我在页面上有多个 DatePickers,它们使用从 Controller 传递的模型正确设置了初始值。
但是,当我选择一个日期时,该值不会存储在 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',
});
传递给控制器的模型将 FirstDate 作为 DateTime 但它始终是默认日期。从未设置使用选择器选择的日期。
编辑>我现在明白,作为 View 模型一部分的列表不是传递回控制器的列表。有没有办法在视图中构建列表而不使用 Ajax 回调?
我想不出其他方法来为未知数量的日期选择器存储日期。
解决方案
如果有人对如何在不刷新页面和不使用 AJAX 的情况下处理传回控制器的未知数量的参数感兴趣,我找到了一种解决方法
我像这样定义每个日期选择器:
<input type="text" class="input-group datepicker date" name="@pickerReference"/>
这些可以根据您通过 Model.YourPickerListDates 从控制器提供的列表创建
将表单提交回控制器时,不是将每个选择器硬输入到模型或控制器的参数中,而是IFormCollection form
与返回的模型并排添加。
在控制器中,您可以遍历 formCollection 或像这样选择每个日期:
string value = Convert.ToString(form["pickerReference"]);
我想不出更好的解决方案,因为返回的模型必须具有强定义的值。如果您不想使用 formCollection 返回值,则可能需要调用 Ajax 或其他方法。
推荐阅读
- jquery - 如何使用 jQuery 在多个选项之间切换
- ruby - 如何检查是否使用 Capybara/Ruby/Cucumber 下载的文件
- mysql - 为什么“不在”和“不存在”不起作用?
- pandas - Pandas 基于时间窗合并两个时间序列数据帧(cut/bin/merge)
- angular - 可以联合 Reducer 的 ActionCreators 吗?
- javascript - 正则表达式过滤器转义
- javascript - D3.JS yScale 仅返回一个值的“未定义”
- typescript - 获取地图打字稿的指定键的值错误类型错误:this.trmap.get不是函数
- r - 将单列分成 3 列,保留原始列 (R)
- kendo-ui - Kendo UI Grid 在弹出窗口中带有表单