私は ASP.NET MVC に関しては初心者なので、次のシナリオで誰かがガイダンスを提供できれば幸いです。
サイトに登録できるメンバーには、クライアントとサプライヤーの 2 種類があるシナリオを考えます。
各タイプは、デフォルトのメンバー資格情報 (ユーザー名、電子メール、パスワード) とともに、個別のモデル/テーブル (つまり、クライアント モデル/テーブル、サプライヤー モデル/テーブル) に追加情報が格納されるメンバーになります。これに対する最善のアプローチがわからない。おすすめはありますか?
タイプごとに個別の登録ページがあり、登録が成功すると、それぞれの役割 (つまり、クライアント、サプライヤー) に追加されます。
これが私が遊んでいるクライアントモデルです。
public class Client
{
// Will set this manually when creating a Client member
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ClientId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
現在、クライアントの登録を処理するために、次のようにViewModelを作成しました
public class RegisterClient
{
// Default ASP.NET MVC RegisterModel
public RegisterModel RegisterModel { get; set; }
public Client Client { get; set; }
}
以下は、ClientController の Register メソッドです。
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(RegisterClient model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.RegisterModel.UserName, model.RegisterModel.Password, model.RegisterModel.Email, null, null, true, null, out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(model.RegisterModel.UserName, false /* createPersistentCookie */);
Roles.AddUserToRole(model.RegisterModel.UserName, "Client");
// Get UserId for Client <-> User relationship
int id = int.Parse(Membership.GetUser(model.RegisterModel.UserName).ProviderUserKey.ToString());
model.Client.UserProfileId = id;
db.Clients.Add(model.Client);
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", createStatus.ToString());
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
これは適切なアプローチですか?私は、Client モデルに MembershipUser を継承させることを考えていました。
クライアントのメンバーシップの詳細 (つまり、ユーザー名と電子メール) とともにクライアントのページ リストを作成するにはどうすればよいですか?