mvc プロジェクトでモデルを管理する最良の方法に関連する 2 つの質問があります。
- モデルを初期化するためにコンストラクターを使用できますか (明らかに関連するロジックを使用して)?
- この目的には、「コンストラクター方式」を使用する方が良いですか、それとも、新しいモデル インスタンスの作成後にコントローラーによって呼び出される拡張メソッドを使用する必要がありますか?
たとえば、連絡先フォームのモデルがあります。ユーザーは、匿名、クライアント、またはサプライヤーの 3 つの役割を持つことができ、各状態でフォームを送信できます。私が望む唯一のことは、ユーザーがログインしている場合(クライアントの役割やサプライヤーの役割など)、テキストボックスに彼のデータをプリロードしたいということです。これを行うために、私はこのコードを書きました:
using System;
using System.Web;
using System.Web.Security;
using DrOkR2.Bll.Managers;
namespace DrOkR2.WebFront.Models
{
public class RequestModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public string Prov { get; set; }
public string Request { get; set; }
public bool UsageConditions { get; set; }
public RequestModel()
{
if (!HttpContext.Current.User.Identity.IsAuthenticated) return;
if (HttpContext.Current.User.IsInRole("Client"))
{
var guid = (Guid)Membership.GetUser().ProviderUserKey;
var manager = new ClientManager();
var client = manager.GetClient(guid);
client.Email = Membership.GetUser().Email;
FirstName = client.FirstName;
LastName = client.LastName;
Email = client.Email;
Phone = client.Phone;
Prov = client.Prov;
}
else if (HttpContext.Current.User.IsInRole("Supplier"))
{
var guid = (Guid)Membership.GetUser().ProviderUserKey;
var manager = new SupplierManager();
var supplier = manager.GetSupplier(guid);
supplier.Email = Membership.GetUser().Email;
FirstName = supplier.FirstName;
LastName = supplier.LastName;
Email = supplier.Email;
Phone = supplier.PrimaryPhone;
Prov = supplier.BusinessProv;
}
}
}
}
それは完全に機能しますが、私の質問は次のとおりです。私は可能な限り最善の方法を使用していますか?