タイトルはそれをすべて言います。モデルには StartDate フィールドは必要ありませんが、POST では必須であると言われました。これはいくつかの検索フィールドの 1 つで、それぞれがオプションです。そのため、 IsModel.Valid をチェックしていないため、検索は機能しますが、画面にメッセージが表示されます。ビューで @Html.ValidationSummary(true) を設定すると、メッセージは非表示になりますが、フィールドは依然として赤くなります。
また、EndDate が StartDate よりも遅いことを確認するためのチェックも行っているため、ISN'T エラーがない場合だけでなく、エラー /必須フィールドが表示されるメッセージが必要です。
コードは次のとおりです。
モデル(一部)
[Display(Name = "Start Date")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
[Display(Name = "End Date")]
[GreaterThanOrEqualTo("StartDate", ErrorMessage = "End Date must be later than Start Date")]
[DataType(DataType.Date)]
public DateTime EndDate { get; set; }
VIEW(一部)
@using (Html.BeginForm()){
@Html.ValidationSummary(false)
<table>
<tr>
<td>
@Html.DisplayNameFor(m => m.StartDate)
@Html.TextBox("StartDate", "", new { @class = "datefield" })
etc.
共有/表示テンプレート
@model Nullable<DateTime>
@(Model != null ? string.Format("{0:M/d/yyyy}", Model) : string.Empty)
共有/エディター テンプレート
@model Nullable<DateTime>
@{
DateTime dt = DateTime.Now;
if (Model != null)
{
dt = (System.DateTime) Model;
}
@Html.TextBox("", String.Format("{0:M/d/yyyy}", dt.ToShortDateString()), new { @class = "datefield", type = "date" })
}
これらのエディタの中には、ポップアップ カレンダーを機能させるものもあります。
さまざまなことをオン/オフしようとしましたが、何らかの方法で日付フィールドが必要であると言われています。何か案は?ありがとう。