4

カミソリで 2 ページの登録プロセスを作成しています。ここでの問題は、最初のページでデータ (ユーザー名、パスワードなど) を収集し、隠し入力変数を使用して最初のページのデータを 2 番目のページに格納することです。

ここに私の隠しコードがあります:

<div id="hidden vals" style="display:none;">
    @Html.HiddenFor(model => model.userRegisterModel.UserName)
    @Html.HiddenFor(model => model.userRegisterModel.studentFirstName)
    @Html.HiddenFor(model => model.userRegisterModel.studentlastName)
    @Html.HiddenFor(model => model.userRegisterModel.Email)
    @Html.PasswordFor(model => model.userRegisterModel.Password)
    @Html.PasswordFor(model => model.userRegisterModel.ConfirmPassword)

</div>

チャレンジはパスワードと確認パスワードにあります。パスワード タイプの非表示フィールドを使用したくありませんが、パスワードを保持したいのですが、ページ ソースには表示されません。ただし、「PasswordFor」には、値を「デポピュレート」し、ユーザーに再入力させるという副次的な問題があります。

繰り返しますが、パスワードが必要であり、永続化されていることを確認し、できればユーザーに表示されないようにします。重要なのは、パスワードが必要であり、「ソースの表示」から非表示になっていない値を確認することです

私の代替戦略は、セッション変数を使用してすべての「ページ 1 の値」を格納することですが、これには回避したい他の落とし穴があります。

4

2 に答える 2

2

別のアプローチを提案できますか?2 ページの代わりに、two-DIV を使用します。

検証 (クライアントとリモート) などを活用して、有効なフォームがないとユーザーが先に進めないようにすることができます。2 番目のページ用にロードまたは作成する必要があるものがある場合は、Ajax を使用してそれを行うことができ、非表示フィールドまたはセッション変数/タイムアウトを使用せずに、フォームをページ上に残すことができます。

<form ...>
  <div id="part-one">
    <!-- content... -->
  </div>

  <div id="part-two" style="display:none;">
    <!-- content... -->
  </div>

  <div>
     <button type="button" id="prev-div">Previous</button>
     <button type="button" id="next-div">Next</button>
     <button disabled="disabled" id="next-div">Submit</button>
  </div>
</form>

ボタンは表示されたままで、jQuery を使用してボタンの状態を切り替えることができます。要件が変更された場合は、モデル クラスとビューを更新するだけで十分です (モデル バインディングを使用している場合)。

于 2012-09-14T14:58:19.463 に答える
1

はい。それらをセッションに保持し、2 番目のページ/アクション メソッドでアクセスします。

そして、永続ストレージのためにそれから読み取ったら、その特定のセッション変数を必ずクリアしてください。

于 2012-09-14T13:51:03.077 に答える