我正在vb.net中创建一个mvc应用程序,我试图将某些字段映射到某些用户,以便它特定于各个用户。我有四个连接映射的SQL表。它们是UserTable,ClientTable,ProjectTypeTable和IssueTable。
我要做的是:ID为1的用户将登录,我获取此ID并将其与ClientTable中的userID匹配,以获取该客户端的正确用户。一旦我得到它,我将获得ClientID并将其与ProjectTypeTable匹配以获得多个正确的projectTypes,例如客户端可以有1-8个项目可用。 IssueTable将具有所选的projectType。
我创建了一个如下所示的ViewModel:
Public Class ClientViewModel
Public proTable As List(Of ProjectType)
Public cTable As ClientTable
Public uTable As UserTable
Public iTable As IssueTable
End Class
我计划做的是在用户登录时检索用户ID并将其传递给会话状态中的其他视图,以便在他们注销之前保留正确的用户ID。这是我尝试过的:
Dim uTable As SQLDatabase = New SQLDatabase()
Dim getUserID = (From data In uTable.UserTables Where data.username = user.username AndAlso data.userPassword = user.userPassword Select data.userID)
If (getUserID .Count() > 0) Then
Session("userIDData") = getUserID.ToString()
然后在提交控制器中我有这个:
Dim getuserID = Session("userIDData")
Dim userModel = New IssueTracker.ClientViewModel()
userModel.cTable = dbServer.ClientTables.Where(Function(x) x.userID = "")
'the speech marks will be the userID retrieved from the session state
userModel.proTable = dbServer.ProjectTypes.Where(Function(x) x.client = "").ToList()
'the speech marks will be the clientID retrieved from the session state
我遇到的问题是我实际上并没有获取ID,这是将用户映射到特定字段的好方法吗? ID不必通过会话状态发送,这是我尝试过的最后一件事。我怎么能正确地做到这一点?