DateRangePicker MVC 剃刀
DateRangePicker MVC razor
我正在尝试使用 Razor 语法将选定的日期范围从视图传递到控制器。如何实现?
我正在使用这个 daterangepicker http://www.daterangepicker.com。
我可以使用 viewBag 传递值,但我想知道使用 Razor 语法传递值的正确方法。
我试过 @Html.TextBox("Model.Date", null, new { @id="reservationtime", @class = "form-control pull-left" })
但它也没有设置日期范围值。
<div class="box-body">
<div class="form-group">
@Html.DropDownListFor(m => m.employeeCode, Model.EmployeeList, "All",
new { @class = "form-control select2", @id = "employeeCode", @name = "employeeCode" })
</div>
</div>
<div class="box-body">
<div class="form-group">
<div class="input-group date timepicker"
data-date-format="HH:mm"
data-date-useseconds="false"
data-date-pickDate="false">
<div class="input-group-addon">
<i class="fa fa-clock-o"></i>
</div>
<input type="text" class="form-control pull-left" id="reservationtime">
</div>
<!-- /.input group -->
</div>
</div>
@section Scripts {
<script type="text/JavaScript">
$(document).ready(
function () {
$("#employeeCode").select2();
$('#reservationtime').daterangepicker({
//use24hours: true,
timePicker: true,
timePickerIncrement: 30,
format: 'MM/DD/YYYY HH:mm',
//showMeridian: false,
timePicker24Hour: true,
})
//Date range picker with time picker
$('#reservationtime').on('apply.daterangepicker', function (ev, picker) {
//Model.startDate = picker.startDate.format('YYYY-MM-DD HH:mm');
// Model.endDate = picker.endDate.format('YYYY-MM-DD HH:mm');
// PASS VALUE TO CONTROLLER HERE
console.log(picker.startDate.format('YYYY-MM-DD HH:mm'));
console.log(picker.endDate.format('YYYY-MM-DD HH:mm'));
});
}
);
function applyFilter() {
window.location.href = '@Url.Action("Index", "History")';
}
</script>
}
public ActionResult Index(HistoryModel model)
{
//
}
您可以使用 JQuery 来完成,如下所示。只需使用 POST 将其传递给控制器,但您需要更改 Index() 参数才能匹配。
$.ajax({
url: '/Home/Index',
type: 'POST',
data: {
startDate: picker.startDate.format('YYYY-MM-DD HH:mm'),
endDate: picker.endDate.format('YYYY-MM-DD HH:mm'),
},
contentType: 'application/json; charset=utf-8'
});
其他方法是为您的数据创建隐藏输入。当您从日期选择器中选择日期范围时,您应该使用 JS 设置此隐藏字段的值,并在表单提交时将它们与模型一起传递。
@Html.HiddenFor(model => model.StartDate)
@Html.HiddenFor(model => model.EndDate)
我正在尝试使用 Razor 语法将选定的日期范围从视图传递到控制器。如何实现?
我正在使用这个 daterangepicker http://www.daterangepicker.com。
我可以使用 viewBag 传递值,但我想知道使用 Razor 语法传递值的正确方法。
我试过 @Html.TextBox("Model.Date", null, new { @id="reservationtime", @class = "form-control pull-left" })
但它也没有设置日期范围值。
<div class="box-body">
<div class="form-group">
@Html.DropDownListFor(m => m.employeeCode, Model.EmployeeList, "All",
new { @class = "form-control select2", @id = "employeeCode", @name = "employeeCode" })
</div>
</div>
<div class="box-body">
<div class="form-group">
<div class="input-group date timepicker"
data-date-format="HH:mm"
data-date-useseconds="false"
data-date-pickDate="false">
<div class="input-group-addon">
<i class="fa fa-clock-o"></i>
</div>
<input type="text" class="form-control pull-left" id="reservationtime">
</div>
<!-- /.input group -->
</div>
</div>
@section Scripts {
<script type="text/JavaScript">
$(document).ready(
function () {
$("#employeeCode").select2();
$('#reservationtime').daterangepicker({
//use24hours: true,
timePicker: true,
timePickerIncrement: 30,
format: 'MM/DD/YYYY HH:mm',
//showMeridian: false,
timePicker24Hour: true,
})
//Date range picker with time picker
$('#reservationtime').on('apply.daterangepicker', function (ev, picker) {
//Model.startDate = picker.startDate.format('YYYY-MM-DD HH:mm');
// Model.endDate = picker.endDate.format('YYYY-MM-DD HH:mm');
// PASS VALUE TO CONTROLLER HERE
console.log(picker.startDate.format('YYYY-MM-DD HH:mm'));
console.log(picker.endDate.format('YYYY-MM-DD HH:mm'));
});
}
);
function applyFilter() {
window.location.href = '@Url.Action("Index", "History")';
}
</script>
}
public ActionResult Index(HistoryModel model)
{
//
}
您可以使用 JQuery 来完成,如下所示。只需使用 POST 将其传递给控制器,但您需要更改 Index() 参数才能匹配。
$.ajax({
url: '/Home/Index',
type: 'POST',
data: {
startDate: picker.startDate.format('YYYY-MM-DD HH:mm'),
endDate: picker.endDate.format('YYYY-MM-DD HH:mm'),
},
contentType: 'application/json; charset=utf-8'
});
其他方法是为您的数据创建隐藏输入。当您从日期选择器中选择日期范围时,您应该使用 JS 设置此隐藏字段的值,并在表单提交时将它们与模型一起传递。
@Html.HiddenFor(model => model.StartDate)
@Html.HiddenFor(model => model.EndDate)