我在MVC应用程序的页面上有一个Kendo DatePicker控件:
@(Html.Kendo().DatePicker()
.Name("PlanStartDate")
.HtmlAttributes(new { @class = "reportParam" })
.Value(Model.MinDate)
.Min(Model.MinDate.ToShortDateString())
.Max(Model.MaxDate.ToShortDateString())
)
请注意,我正在设置.Min和.Max值.这些最小值和最大值正确地将日历下拉列表限制在适当的日期范围内:“ 9/10/2013”至“ 9/10/2014”.
不幸的是,用户仍然可以通过使用输入文本框而不是日历下拉菜单来输入“最小”和“最大”日期之外的日期.
我知道我可以添加JavaScript来在控件的kendoValidator对象上创建规则和消息,但是我正在寻找最简单的,希望是仅限Razor的解决方案来强制日期选择器上的最大和最小范围,无论用户如何使用输入日期.
解决方法:
不幸的是,仍然没有任何东西可以在剃刀中设置.我发现的唯一解决方案是在初始化该widged之后将输入设置为readonly.这样可以确保用户无法手动输入任何日期,并且可以使用选择器控件.我尝试通过添加到HtmlAttributes中以剃刀语法设置属性,但这与在小部件上设置只读具有相同的结果,即禁用了输入和选择器.
我最初决定只对更改后的事件添加验证,以便不会丢失手动输入日期的功能,但是在手动输入日期时不会触发(!)
$(function() {
$("#startDate").prop("readonly", "readonly");
});