ASP MVC で KendoUI DateTimePicker を使用しています。タイム ピッカーを選択すると、00:00 ~ 24:00 の時間が表示されます。これは、人々がスクロールするには扱いにくいものです。どの日でも、08:00-16:00 のみを表示したい。それは可能ですか?これが私が試したものです。有効な DateTime ではないため、これは失敗しました。
@(Html.Kendo().DateTimePickerFor(x => x.HearingDate)
.Name("HearingDate")
.Min(new DateTime(0, 0, 0, 8, 0, 0))
.Max(new DateTime(0, 0, 0, 16, 0, 0))
)
編集:私が選択した答えは、DateTimePickerでこれを行う方法がないことを理解したら、私を正しい道に導きました。Kendo DatePickerFor と TimePickerFor をブレンドした私のソリューションを次に示します。主に TimePicker で発生した問題が原因で、これを把握するのに何時間もかかりました。私のプロジェクトでは、日付と時刻の両方を null にすることができます。
モデル
[Display(Name = "Hearing Date")]
public DateTime? HearingDate { get; set; }
[Display(Name = "Hearing Time")]
[DataType(DataType.Time)]
public DateTime? HearingTime { get; set; }
[Display(Name = "Hearing Date")]
public DateTime? HearingDateOnly { get; set; }
コントローラ
if (model.HearingDateOnly != null && model.HearingTime != null)
{
var d = model.HearingDateOnly.Value;
var t = model.HearingTime.Value;
model.HearingDate = new DateTime(d.Year, d.Month, d.Day, t.Hour, t.Minute, t.Second);
}
意見
@(Html.Kendo().DatePickerFor(x => x.HearingDateOnly)
.Name("HearingDateOnly")
.Min(DateTime.Now)
)
@(Html.Kendo().TimePickerFor(x => x.HearingTime)
.Name("HearingTime")
.Min(new DateTime(2010,1,1,8, 0, 0))
.Max(new DateTime(2010,1,1, 16, 0, 0))
)
注: HearingDate はビューに表示されません。私はこれを舞台裏で使用して、他の 2 つを結合します。最小値と最大値は 2010 年 (任意) の日時ですが、剣道で使用されるのは時間部分のみです。TimeSpan がありましたが、問題があったため削除しました。Kendo の検証メッセージで「HearingTime は有効な日付ではありません」という醜いメッセージが表示されるのを防ぐには、Display 属性が必要です。