したがって、私の MVC Orchard アプリケーションでは、ユーザーは DD から場所を選択し、datepicker から日付を選択します。次に、検索は DB テーブルを調べて、結果のリストを返します (存在する場合)。ユーザーは、[表示] ボタンを使用して、画面上の各レコードを表示できます。これはすべて正常に機能しますが、ユーザーが「戻る」ボタンを押すと、レコードを表示した後にエラーが発生します。
Webpage has expired
コード内の GET と POST の他の例を調べましたが、差分はありません。なぜこれが起こっているのか誰にも分かりませんか、それは検索に関係していると思います。以下のコードを参照してください
@model Project.ViewModels.SearchDeliveryRunsVM
@{
Script.Require("ShapesBase");
Layout.Title = T("Delivery Runs History").ToString();
Script.Require("jQuery");
Script.Require("jQueryUI");
Style.Require("jQueryUI_DatePicker");
}
@using (Html.BeginFormAntiForgeryPost())
{
<div>
<div style="display:inline-block">
<div class="editor-label">Delivery Run</div>
<div class="editor-label">@Html.DropDownList("DeliveryRunId", Model.DeliveryRunList)</div>
</div>
<div style="display:inline-block">
<div class="editor-label">@T("Date")</div>
<div class="editor-label">@Html.TextBoxFor(model => model.SelectedDate, new { @class = "jquery_datepicker", @Value = Model.SelectedDate.HasValue ? Model.SelectedDate.Value.ToString("dd/MM/yyyy") : string.Empty })</div>
</div>
<button style="display:inline-block" type="submit">@T("Search")</button>
</div>
if (Model.Orders != null && Model.Orders.Count() > 0)
{
<br />
<table class="items">
<colgroup>
<col id="Col10" />
<col id="Col11" />
</colgroup>
<tr>
<th>Order Id</th>
<th>Customer</th>
<th>Value</th>
<th>Payment</th>
<th>Signature</th>
<th></th>
</tr>
@foreach (Project.Models.OrderInfo results in Model.Orders)
{
<tr>
<td>@results.OrderRecordId</td>
<td>@results.QbCustName</td>
<td>@results.Value</td>
<td>@results.Payment</td>
<td>@Html.CheckBoxFor(x => results.Signature, new { disabled = "disabled" })</td>
<td>
<div>
<a href="@Url.Action("ViewOrder", "DeliveryRuns", new { id = results.OrderRecordId, custId = results.QbCustId })" title="@T("ViewOrder")">@T("ViewOrder")</a>
</div>
</td>
</tr>
}
</table>
}
else
{
if (!Model.IsInitialGet)
{
<p>No records exist</p>
}
}
}
@using (Script.Foot())
{
<script type="text/javascript" language="javascript">
$(function () {
var dates = $("#SelectedDate").datepicker({
dateFormat: 'dd/mm/yy'
}).val("@(Model.SelectedDate.HasValue ? Model.SelectedDate.Value.ToString("dd/MM/yyyy") : DateTime.Now.ToString("dd/MM/yyyy"))");
});
</script>
}
更新 私のサイトの他のすべての検索機能は、各コントローラーの Index 関数を使用してから、ビューで次のようなものを使用しています。
@using(Html.BeginForm("Index", "CustomerAdmin", FormMethod.Get)) {
<fieldset class="bulk-actions">
<label for="search">@T("Search:")</label>
@Html.TextBoxFor(m => m.SearchExpression)
<button type="submit">@T("Search")</button>
<a href="@Url.Action("Index")">@T("Clear")</a>
</fieldset>
}
GET を使用して結果を表示するには、私の問題として GET と POST を使用しています。多分?