Web アプリケーションのシナリオは次のとおりです。
ユーザーが会社を登録するため、会社の Create ビューを読み込みます。
作成ページ内に、会社の担当者のドロップダウン リストがあります。最初はこのリストは空です。ユーザーは作成ボタンをクリックして新しいアドレスを作成できます。
これにより、担当者の部分ビュー (JQuery ポップアップとして) が読み込まれます。ユーザーが新しい連絡先担当者を作成すると、ビューは会社登録ビューに戻ります。会社の登録ビューは、ドロップダウン ボックスに新しく追加された担当者で更新する必要があります。また、すでに入力されているデータを保持する必要があります。
以下は私のシナリオと同じですが、設計上の制約により JSON を使用できません。MVC c# アプリケーションで jquery を介してビューからコントローラーに完全なモデルを渡す方法
私の質問: ビュー内のモデル全体をセッションに保存して、コントローラーで使用する方法はありますか?
私は次のことを試しました:
<div class="editor-label">
@Html.LabelFor(model => model.CompanyName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CompanyName)
@Html.ValidationMessageFor(model => model.CompanyName)
@Session.Add("CompanyName",Model.CompanyName)
</div>
これは void であるため、値を返さず、レンダリングできません。
そのため、モデルをパラメーターとしてコントローラーに渡そうとしましたが、null のままです。
public ActionResult CreateContactPerson(ManagementAgencyViewModel viewModel)
{
if(HttpContext.Session != null)
HttpContext.Session.Add("MaObject",viewModel);
return RedirectToAction("Create", "ContactPersons");
}
actionLink を使用して、「ManagementAgencies」という名前の Company Controller を呼び出します。
@Html.ActionLink(@ViewResources.Link_New_ContactPerson, "CreateContactPerson", "ManagementAgencies", null, new { @class = "openDialog ui-button ui-state-default ui-corner-all", data_dialog_id = "createDialog", data_dialog_title = @ViewResources.DialogTitle_CreateNew })
隠しフィールドや JSON を使用せずに、セッションに保存する代替手段はありますか? もしそうなら、モデル値をビュー内からセッションに保存する正しい方法は何ですか?