ASP.NET MVCについては初心者です。Entity Frameworkコードを使用してテーブルに追加のユーザー情報を格納するASP.NET MVC 3最初のアプローチ
サイト、クライアント、サプライヤに登録できるメンバーは2種類あります。
各タイプは、デフォルトメンバークレデンシャル(ユーザー名、電子メール、パスワード)と共に、別のモデル/テーブル(すなわち、クライアントモデル/テーブル、サプライヤーモデル/テーブル)に追加情報が格納されたメンバーになります。これに最善のアプローチがないかどうかはわかりません。推奨事項はありますか?
各タイプごとに個別の登録ページがあり、登録が成功すると、それぞれの役割(クライアント、サプライヤなど)に追加されます。
私がプレイしているクライアントモデルは次のとおりです。クライアント以下
public class RegisterClient
{
// Default ASP.NET MVC RegisterModel
public RegisterModel RegisterModel { get; set; }
public Client Client { get; set; }
}
ClientController
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);
}
での登録方法は、これは適切なアプローチですされているため、登録を処理するために、次のように
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に作成しましたか?私は、クライアントモデルがMembershipUserを継承することを考えていました。
どのようにすれば、クライアントのページリストをメンバーシップの詳細(ユーザー名と電子メール)とともに作成できますか?
だから、.netメンバーシップにリンクするユーザーモデル(クライアント/サプライヤの共通のプロパティを含む)を紹介する必要があります。次に、Client/SupplierモデルのKeyおよびForeignKeyとしてUserモデルIDを使用して関連付けを作成します。私は理論を理解するだけで解決策を実装する方法がわからない。クライアントの編集/詳細ページを処理するためにViewModelが必要ですか?.netのメンバーシッププロパティをどのように引き出すことができるかの例はありますか?それはデフォルトのAccountModels/Controllersに似ていますか? –
クライアントとサプライヤの編集/詳細ページを提供する必要があります。これは、メンバーシップとは別のものです。しかし、パスワードを変更するためのフォームを提供することもできます。あなたは 'User.Identity.Name'を使って現在のユーザのユーザ名を得ることができます。 ASP.Netメンバーシップシステムでユーザーのユーザー名を取得するには、ユーザーをメンバーシップで見つけてユーザー名を取得し、メンバー表ではなくユーザーの表に保管する必要があります。 – flumeware
私のユーザモデルとクライアントモデルの見え方の例を教えてください。 –