レポートにテキストボックス(日付)とボタンを追加してデータをフィルタリングします。剃刀ビューの検索入力/テキストボックスの日付検証MVC
ザ・MVCの下に、クライアント側(サーバ側可能であれば)上(DATEでなければならない)働いているが、入力はまだ検証されなければならないが
私のモデルは次のようになります。
public class DailyReport
{
public int DailyReportID { get; set; }
public DateTime? ReportDate { get; set; }
}
表示:
@model IEnumerable<project_name.Models.DailyReport>
@* text box and button: *@
@using (Html.BeginForm("Index", "DailyReport", FormMethod.Get))
{ <p>
Title: @Html.TextBox("SearchDateString")
<input type="submit" value="Filter" />
</p>
}
@* display dates*@
@foreach (var item in Model)
{ @Html.DisplayFor(modelItem => item.ReportDate)
}
私のコントローラ:
public ViewResult Index(String SearchDateString)
{
var dailyreport = db.DailyReport.Include(d => d.Site);
if (!String.IsNullOrEmpty(SearchDateString))
{
DateTime search_date = Convert.ToDateTime(SearchDateString);
dailyreport = dailyreport.Where(r => r.ReportDate == search_date);
}
return View(dailyreport.ToList());
}
誰かが私を助けてくれますか? テキストボックスに有効な日付が入力されていることを確認するにはどうすればよいですか? この入力用の日付フィールドを持つ別のモデルを作成する必要がありますか?
こんにちはシャーク。私の入力ボックスは現在、ReportDateを直接参照していません。テキストボックスを使用して、SearchDateStringという文字列をコントローラーに渡します。コントローラーはDateに変換します。 SearchDateString入力を検証するにはどうすればよいですか? –
@DavidSmit私の編集を参照してください。 'TextBoxFor'ヘルパーを使用してモデルに直接プッシュします。あなたの妥当性検査はそこで行われます。 –
ハイシャーク モデルは、リストであるため、IEnumerableとして宣言されています。あなたの提案を追加すると、エラーが発生します: ** System.Collections.Generic.IEnumerable 'には、' ReportDate 'の定義が含まれておらず、最初の引数を受け入れる拡張メソッド' ReportDate 'もありません** –