asp.net MVC 4 アプリケーションで単純なメンバーシップを使用しています。ユーザーの最終ログイン日を取得する方法。デフォルトの Web ページ スキーマ テーブルに作成日が表示されません。シンプルなメンバーシップで LastLogin 日付のフィールドを作成する必要がありますか? ありがとう
7690 次
1 に答える
11
私はこの方法で解決しました:
UsersContext の UserProfile モデルに LastLogin フィールドを追加しました。
[Table("UserProfile")] public class UserProfile { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } public virtual string UserName { get; set; } public virtual DateTime? LastLogin { get; set; } }
AccountController の Login Method を変更しました。
public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) { using (UsersContext db=new UsersContext()) { UserProfile userProfile = db.UserProfiles.SingleOrDefault(u=>u.UserName==model.UserName); userProfile.LastLogin = DateTime.Now; db.Entry(userProfile).State=EntityState.Modified; db.SaveChanges(); } return RedirectToLocal(returnUrl); } // If we got this far, something failed, redisplay form ModelState.AddModelError("", "The user name or password provided is incorrect."); return View(model); }
次に、次のように UserProfiles を取得しました。
public ActionResult Index() { return View("Index",_db.UserProfiles); }
最後に、LastLogin DateTime を Index.cshtml に表示しました。
@foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.UserName) </td> <td> @Html.DisplayFor(modelItem => item.LastLogin) </td> </tr> }
于 2013-04-03T17:10:53.713 に答える