0

ユーザーがログインしてアクティビティフォームに情報を入力できるMVC Webサイトに取り組んでいます。送信されると、結果が表示されます。ユーザーが Web サイトの他のリンクに移動してから、アクティビティ フォームに戻ることにしたとします。ユーザーのフォーム フィールド、ドロップ ボックス、スライダーの配置などを維持する方法はありますか? フォームを維持してはならないのは、ユーザーがログアウトするまでだけです。

これまでの私のコードは次のとおりです。

見る - 活動

@model Project.Models.ActivityModel
@using (Html.BeginForm())
 {
    @Html.ValidationSummary(true)
    @Html.TextBoxFor(x => x.Activity_CityName)
    <div class="editor-label">   
        <strong>@Html.LabelFor(x => x.Activity_StartDate)</strong>
    </div> 
    <div class="editor-field">
        <input id="checkin" type="text" name="Activity_StartDate" />
    </div>
    @Html.TextBoxFor(x => x.Activity_EndDate)
    @Html.DropDownListFor(x => x.Activity_NumAdults, AdultNum)
    @Html.DropDownListFor(x => x.Activity_NumChildren)
    @Html.DropDownListFor(x => x.Activity_ChildAge1, ChildAge)
    @Html.DropDownListFor(x => x.Activity_ChildAge2, ChildAge)
    @Html.DropDownListFor(x => x.Activity_ChildAge3, ChildAge)

   <div class="submitbutton"> 
       <input data-inline="true"type="submit" id="activity_search" value="Search" />
   </div> 
 }

結果ビュー - Activities_FormSuccess

@model Project.Models.ActivityModel

<p>City: @Model.Activity_CityName</p>
<p>StartDate: @Model.Activity_StartDate</p>
<p>EndDate: @Model.Activity_EndDate</p>

<div>
    <p><strong>Ticket</strong></p>
    <p>Number of Adults: @Model.Activity_NumAdults</p>
    <p>Number of Children: @Model.Activity_NumChildren</p>
    <p>Child 1 age: @Model.Activity_ChildAge1</p>
    <p>Child 2 age: @Model.Activity_ChildAge2</p>
    <p>Child 3 age: @Model.Activity_ChildAge3</p>
</div>

コントローラ

public ActionResult Activities()
{
    return View();
}

[HttpPost]
public ActionResult Activities(ActivityModel activitysubmission)
{
    return View("Activities_FormSuccess", activitysubmission);
}
4

3 に答える 3

2

私がこれを処理する方法は、コントローラー関数間で渡されるセッションオブジェクトを使用することです(ユーザーのログインステータスも維持される可能性があります)。ユーザーが[後でこのフォームを終了する]などをクリックすると、フォーム、フォームの値、またはJSONとしてシリアル化されたフォームをセッションに保存します。フォームページが読み込まれるたびに、その変数がセッションに存在するかどうかを確認してください。その場合は、フォームにそのデータを事前入力します。それ以外の場合は、空白を表示します。

于 2012-06-22T16:06:36.470 に答える
2

投稿されたモデルをセッションの投稿アクションに保存し、フォームをユーザーに表示するときに復元する必要があります。

public ActionResult Activities()
{
    if(Session["Activities"] != null)
    {
       var activityModel = (ActivityModel)Session["Activities"];
       return View(activityModel );
    }
    return View();
}

[HttpPost]
public ActionResult Activities(ActivityModel activitysubmission)
{
    ...
    Session["Activities"] = activitysubmission;
    return View("Activities_FormSuccess", activitysubmission);
}
于 2012-06-22T16:57:32.047 に答える
1

必要な情報を「Session」値の形式で保存し、このビューに戻って必要に応じてデータを入力するときに、この中に存在するかどうかを確認します。

于 2012-06-22T16:04:16.227 に答える