0

我有一個控制器,其中創建操作需要用戶標識。創建新對象時在數據庫中保存用戶標識

這裏是控制器。

public ActionResult Create(MyCreateViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      var myobject = new MyObject 
      { 
       Attrib1 = DateTime.Now.Date, 
       Attrib2 = model.Etichetta, 
       UserId = // I need the user ID... 
      }; 

      // Save the object on database...     

      return RedirectToAction("Index"); 
     } 
     return View(model); 
    } 

我使用具備MVC 4

SimpleMembership這是MVC 4中的最佳實踐,來管理應用程序的userIDUserProfile表?

我是否必須在每個實體類中包含用戶屬性?

我應該使用Session[]變量還是什麼?

+0

此用戶ID是當前登錄用戶的ID嗎? – Andrei

+0

是的,我需要對當前登錄用戶的引用。 –

回答

2

您可以使用此行從UserProfiles表中獲取userId

var userId = WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name); 

您還可以使用此功能獲取用戶完整的配置文件,包括您可能要填充的任何自定義列。

public static UserProfile GetUserProfile() 
     { 
      using (var db = new UsersContext()) 
      { 
       var userId = WebSecurity.GetUserId 
          (HttpContext.Current.User.Identity.Name); 
       var user = db.UserProfiles 
          .FirstOrDefault(u => u.UserId == userId); 
       if (user == null) 
       { 
        //couldn't find the profile for some reason 
        return null; 
       } 
       return user; 
      } 
     } 
+0

我認爲這是正確的。 – Andrei

+0

'WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name)'工作。如果我想使用該功能,我應該在哪裏放置它?不是在我猜的UserProfile模型類中,或者我將它翻譯成表格中的新屬性...對嗎? –

+0

這是'SimpleMembership'或'WebMatrix'的OOTB函數。我有一個類文件(稱爲'UserHelpers'),其中包含這兩個片段以方便訪問。 – Eonasdan