会话状态MVC3
本文关键字:MVC3 会话状态 | 更新日期: 2023-09-27 18:22:14
我遇到了一个问题,我找不到可以进行某些会话状态的教程或代码。例如,我想创建一个应用程序,当用户登录时,他或她只能查看这些信息,例如,一个学生查看他的成绩,而其他学生看不到这些信息。我去年在VB2008中已经实现了这一点,但在MVC3中需要帮助,因为它与我使用C#的语言不同。在vb2008中,我实现了从ASP.net数据库(用户)连接一个表,并通过外键连接到我的员工表。并添加了以下代码:
Session("ID") = objUser
Dim db As New DataClassesDataContext
Dim info = From a In db.tblCourses _
Where a.CourseTitle = ddlCourseName.SelectedItem.Value _
Select a.CourseId Order By CourseId Descending
crseID = info.FirstOrDefault()
Session("Course") = crseID
sdsAddStudent.Insert()
FName.Text = ""
LName.Text = ""
Address.Text = ""
ddlCourseName.SelectedIndex = 0
Session("UserID2") = objUser
Session("RoleID2") = "f13b9bf3-593d-4170-bfaa-bc43655773e2"
sdsRoleStudent.Insert()
我知道VB与C#MVC3不同,因为这是2008年,而不是MVC3。我只是展示了这段代码,所以人们知道我不是在追求免费代码,并试图做出没有成功的努力。
感谢您的帮助
我不清楚你到底想实现什么。
如果要限制用户以独占方式访问属于他们的数据,则需要在"用户"表中使这些数据与他们的ID相关。关于表结构,您所知甚少,但我认为可以放心地假设您有Courses表和类似UsersInCourses的东西,可以将许多用户映射到一个Course。你所要做的就是选择分配了用户Id的课程。要获得当前登录的用户,您只需参考
User.Identity.Name
在应用程序的代码中。
假设你的课是烹饪复习课:
public class Recipe
{
public int Id { get; set; }
public string Name { get; set; }
public string Author { get; set; }
public string PreparationInstructions { get; set; }
public DateTime CreationDate { get; set; }
}
并且您希望有一个返回当前登录用户配方的Action
public ActionResult ShowMyRecipes()
{
var myRecipes = dbContext.Recipes.Where(recipe => recipe.Author.Equals(User.Identity.Name)).ToList();
return View(myRecipes);
}
public ActionResult CreateRecipe(Recipe recipe)
{
// set Author to curently logged in user's key
recipe.Author = Membership.GetUser().ProviderUserKey;
// save changes
dbContext.Recipes.Add(recipe);
}