2014-06-07 24 views
1

我有一個模型,它具有CRUD視圖。當用戶將數據插入數據庫時​​,我想自動添加兩條信息。添加信息和時間戳的用戶。現在時間戳很容易,但我遇到了用戶問題。MVC從模型中訪問登錄用戶

我想過在模型本身中訪問當前登錄用戶,我還沒有找到一種方法。或者也許(還沒有嘗試 - 只是想到了這一點)在視圖中用用戶的細節填充隱藏的字段。

對我來說,模型中的數據看起來比在最終用戶可以操縱的視圖中更安全;我不認爲這個模型可能會發生。

無論如何 - 這個問題: 1)我應該在模型中設置模型的AddedBy屬性給模型中的用戶名還是視圖中?

2)如果它應該在模型內完成......我如何訪問用戶的數據?

謝謝。

+0

只需使用call-User.Identity.Name – banny

回答

1

默認的項目設置會給你dbo.AspNetUsers用於存儲你的用戶ID。或者,你可能有你定製的東西。

您的模型將需要引用用戶名...的註冊(如果允許)和登錄。這是用戶輸入他們選擇的任何登錄(或者某人爲他們分配的地方)的地方。此時,用戶應該能夠更正任何拼寫錯誤或更改名稱。你可能選擇不允許這樣做。但是如果你想讓用戶名出現,它必須在某個地方可用。

爲防止用戶在輸入數據時進行更改,可以將該字段設置爲顯示或隱藏。這樣,你仍然要捕獲用戶標識,但不給他們任何改變它的機會。

在您的觀點中,您可以使用:@Html.DisplayName(User.Identity.Name) or User.Identity.GetUserName()來顯示名稱。

如果你不想讓用戶看到自己的名字?設置字段作爲隱藏@Html.HiddenFor(User.Identity.Name)

對於創建視圖(S):

@Html.TextBoxFor(model => model.UserName, new { Value = User.Identity.Name, @Type="Hidden"}) 

和日期/時間:

 @DateTime.Now.DayOfWeek 
     @DateTime.Now.ToString("MM/dd/yyyy hh:mm tt") 
     @Html.TextBoxFor(model => model.LogDate, new { Value = @DateTime.Now, @Type = "Hidden" }) 

確保您引用您要包含在字段值數據庫在你的控制器的「綁定」語句中。

相關問題