8

asp.net MVC 4 アプリケーションで単純なメンバーシップを使用しています。ユーザーの最終ログイン日を取得する方法。デフォルトの Web ページ スキーマ テーブルに作成日が表示されません。シンプルなメンバーシップで LastLogin 日付のフィールドを作成する必要がありますか? ありがとう

4

1 に答える 1

11

私はこの方法で解決しました:

  1. 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; }
    }
    
  2. 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);
    } 
    
  3. 次に、次のように UserProfiles を取得しました。

    public ActionResult Index()
    {
        return View("Index",_db.UserProfiles);
    }
    
  4. 最後に、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 に答える