フォームから投稿した後、url パラメータを保持する方法を探しています。たとえば、私の GET メソッドは文字列「type」を受け取り、それを使用してビューに表示するレポートのタイプを決定します。URL は次のようになります。
http://mysite/Reports/Report?type=1
[HttpGet]
public ActionResult Report(string type)
{
var model = new ReportsModel()
{
Report = ReportList.Find(o => o.ReportType == type)
};
return View(model);
}
ビューには、レポートのタイプに表示される日付の範囲を決定するために使用される開始日/終了日フィルターを含むフォームがあります。
@using (Html.BeginForm("Report", "Reports"))
{
Report.ReportName
@Html.HiddenFor(o => o.Report.ReportType)
@Html.EditorFor(o => o.Report.StartDate )<br/>
@Html.EditorFor(o => o.Report.EndDate )<br/>
<button id="reports">Report</button>
}
上記のフォームは、指定されたレポート タイプ、開始日/終了日に基づいてデータベースからレポート データを取得し、ビューに戻るアクションにポストします。
[HttpPost]
public ActionResult Report(GenericReportsModel model)
{
switch (model.Report.ReportType)
{
case ReportType.ReportType1:
model.Result = ReportRepository.GetReport<ReportType1>(model.StartDate, model.EndDate);
break;
case ReportType.ReportType2:
model.Result = ReportRepository.GetReport<ReportType2>(model.StartDate, model.EndDate);
break;
}
return View(model);
}
問題は、投稿後、「タイプ」パラメーターが URL から失われることです。
Before the post: http://mysite/Reports/Report?type=1
After the post: http://mysite/Reports/Report
私はこのようなことをすることができる必要があります(これはうまくいきません):
return View(model, new {ReportType = model.ReportType);
誰かがURLをコピーして貼り付けて他の人に送信したい場合に備えて、投稿後にURLにタイプパラメーターを保存するにはどうすればよいですか?