IDEに付属のAspNetSqlProfileProviderを使用して、ユーザーにサイトのどこかにプロファイル情報を入力してもらいます。
プロファイルを編集するためのフォームが自動入力されるプロファイルの編集ページに移動することで、ユーザーがいつでもプロファイルを編集できるようにします。私は現在、ViewBagを使用して、ユーザーのプロファイルの個々の部分をコントローラーからビュー(住所や都市など)に送信することでこれを行っています。
コントローラの取得:
ViewBag.address = CustomProfile.GetUserProfile(User.Identity.Name).Address;
ViewBag.city = CustomProfile.GetUserProfile(User.Identity.Name).City;
意見:
<div class="editor-field">
@Html.TextBox("Address", (string)ViewBag.address)
</div>
<div class="editor-field">
@Html.TextBox("City", (string)ViewBag.city)
</div>
コントローラーポスト:
public ActionResult ChangeProfile( FormCollection favorites )
{
CustomProfile profile = CustomProfile.GetUserProfile();
profile.Address = favorites["Address"];
profile.City = favorites["City"];
profile.Save();
return RedirectToAction("Profile");
}
上記はプロファイルの編集には問題なく機能しますが、ユーザーの観点からは非常にスムーズです(ただし、オンラインで質問/回答を読むと、ViewModelを使用する必要があるように見えますが、移行方法が正確にはわかりません-失敗しています)。
私のユーザーがウェブサイトから「チェックアウト」に行くと(買い物をしている)、購入を可能にする最終情報を入力できる画面が表示されます。これを「注文ページ」と呼びましょう。これらの詳細には、名前、住所、クレジットカード情報などが含まれます。これらの情報の一部は、Webサイトのプロファイルページ内の情報と同じです。
一部のフィールドを空白のままにして、この注文ページの詳細(名前、住所)の一部を自動入力できるようにしたい(クレジットカード-ユーザーが注文ページにアクセスするたびにこれらの詳細を入力する必要がある) 。
注文ページの仕組みは、MVCストアチュートリアルで説明されているとおりです。注文ページが表示されると、以下を使用してフォームが表示されます。
@Html.EditorForModel()
これは素晴らしいですし、注文モデル内で指定された詳細を編集でき、データ検証のもの(名前が必要、住所が必要、クレジットカードは番号である必要があり、電子メールは適切にフォーマットされているなど)が可能になりますが、私はできませんこの注文ページ内の特定のフィールドにユーザーのプロファイルの詳細を入力する方法を理解してください。
プロファイルに含まれている情報だけを使用する新しいViewModelを作成しようとしましたが、希望する最終結果が得られないため、何が必要かを明確に把握できていません。
プロファイル情報として注文モデルのみを使用することを検討しましたが、両方で異なる情報を利用できるようにしたいので、それだけでは不十分です。
プロファイル情報を注文モデルとして使用することを検討しましたが、ユーザーが実際に注文するために使用する情報とは別に、プロファイル情報を柔軟に保存できるようにしたいと考えています。
問題を解決するために具体的に知っておく必要があるのは、「@ Html.EditorForModel()」を使用しているときに特定のフィールドに自動入力する方法です。
私の全体的な状況に関する他の助けは素晴らしいでしょう、私は私の流れを単純化するアドバイスを非常に受け入れています(私は必要以上に自分自身を難しくしているように感じます、そして私はコラボレーションが次のように感じるポイントにいます新鮮な空気の息吹)。