私はASP.NET Core RTM(フル.NET Framework)を使用しています。ASP.NETコアエンティティモデルが自動的にビューモデルにマップされます
エンティティモデルをパラメータとして受け取り、ビューモデルを返すコントローラで予期しない動作が発生しました。コントローラでは、ビューモデルの新しいインスタンスを作成し、エンティティモデルを使用してそれを設定します。 I上記のコードでは
[HttpGet]
public IActionResult Create(ActiveDirectoryUser model)
{
ApplicationUserView user;
user = new ApplicationUserView
{
UserName = model.UserName,
Email = model.Email.ToLower(),
FirstName = model.FirstName,
LastName = model.LastName,
Active = true
};
return View(user);
}
メールアドレスはApplicationUserViewオブジェクトをデバッグするには、電子メールが小文字であることを示しているにもかかわらず、ビュー内の小文字に変更されていないことに気づきました。
私はApplicationUserViewオブジェクトに静的な値を使用したテストを行いました。
user = new ApplicationUserView
{
UserName = "Test",
Email = "[email protected]",
FirstName = "Test",
LastName = "Test",
Active = true
};
上記のコードでは、ビューにはActiveDirectoryUserモデルによって渡された値が引き続き表示されます。
ActiveDirectoryUserモデルの値がビューにどのように表示されているのか、なぜそれらをオーバーライドできないのか分かりません。上記のようにコンストラクタでオーバーライドしようとしましたが、user.Email = "[email protected]"
のように個別に設定しようとしました。
ActiveDirectoryUserモデルのデータを使用せずにApplicationUserViewモデルをビューに渡すにはどうすればよいですか?
現在のコード(質問の先頭にあるもの)は、ビューモデルに 'ActiveDirectoryUser'オブジェクトのプロパティ値を設定しています。必要がない場合は、値を設定しないでください。あなたは直面している問題は何ですか?あなたは値を必要としないか、電子メールの価値を小文字にしたいですか?ごめんなさい !私はあなたの予想される行動について混乱しています – Shyju
上記のように、元の問題は、電子メールアドレスが小文字に変更されていないことでした。なぜ私が言及したテストをしたのか分からず、「ActiveDirectoryUser」モデルの値が、私が何をしてもビューに移動したことが突然見つかった。 –