2013-10-11 75 views
0

我是一個新的ASP MVC學習者,我在一個小塊上工作並陷入困境。該場景是用戶正在創建新帳戶,其中accountID由SQL自動創建。我想通過這個ID到下一步,讓用戶輸入名字和地址。我將如何通過此ID或此場景的任何解決方案?想想通過TempData或Session傳遞數據,但我不確定。ASP MVC 4數據傳遞

+0

我認爲帳戶名稱也是唯一的,所以插入後,我會選擇通過帳戶名來獲得ID。 – jannagy02

+0

當你需要的數據在不同的要求使用'Session'被持久化,如果它是唯一連續之間的一個請求使用TempData的 –

回答

0

TempData將數據保存到您的後續請求的結束。

還有ViewBag/ViewData,它們確實是相同的字典,持續時間較短,它們只持續到當前請求結束。

Session持續,只要用戶的會話打開。

我認爲TempData符合您的賬單,如果「下一步」意味着將數據傳遞到後續視圖,但如果您需要數據更持久,Session是要走的路。

0

只需使用你會使用你的登錄表單相同的過程。如果用戶已經進入數據庫,那麼您不妨將它們視爲尚未擁有完全填充配置文件的登錄用戶。

在ASP.NET MVC,這將 - 在很多情況下 - 由窗體身份驗證Cookie設置爲新註冊的用戶名解決

FormsAuthentication.SetAuthCookie(newUser.Logon, false); 

我認爲存儲的用戶ID TempDataSession這是錯誤的範圍。對於所有正常的目的,在用戶數據庫中插入記錄後,剛剛註冊到您網站的用戶可被視爲登錄。

0

我認爲你正在接近這個錯誤。您應該先讓用戶填寫所有信息,然後再進行所有註冊,包括創建用戶並最終存儲各個步驟中的數據。

如果你做的事情你建議的方式,你最終會與部分註冊用戶。他們將創建一個帳戶,然後可能關閉瀏覽器並從未完成剩下的任務。現在,您將不得不編寫額外的代碼來檢查這一切,他們每次登錄的時候。

最好是隻需註冊程序做這一切在一次作爲一個全有或全無的過程。

+0

我認爲你是對的,但是我的帳戶登錄名和帳號的生物都在數據庫中不同的表。您的意思是,首先我必須將兩個模型合併到一個視圖中,然後編寫一個存儲所有信息的臨時代碼。用戶完成表單後,查詢將用於寫入數據庫? –

+0

@ new-learner - 無論你有多少桌子都沒關係。如果需要,您可以更新1000個表格。您不必將數據從一頁保存到數據庫中的下一頁。您可以有多種選擇,例如將數據發佈到下一頁,使用Ajax執行該過程並將所有數據保存在父頁面中等等。許多選項.. –

0

你可以試試這個辦法 - 創建用戶(用戶名和密碼會從你的表單中的值):

WebSecurity.CreateUserAndAccount(username, password); 

然後做到這一點:

int userID = 0; 
userID = WebSecurity.GetUserId(username); 

希望有所幫助。