【问题标题】:Session State MVC3会话状态 MVC3
【发布时间】:2023-03-11 01:19:01
【问题描述】:

我遇到了一个问题,我找不到可以执行某些会话状态的教程或代码。例如,我想创建一个应用程序,当用户登录时,他或她只能查看那里的信息,例如一个学生查看他的成绩,而其他学生无法看到该信息。我去年在 VB 2008 中实现了这一点,但在 MVC3 中需要帮助,因为它与我使用 C# 的语言不同。在 vb 2008 中,我实现了从 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,我只是在展示这段代码,所以人们知道我不追求免费代码,并试图做出没有成功的努力。

感谢您的热心帮助人们

【问题讨论】:

    标签: c# asp.net asp.net-mvc-3 razor


    【解决方案1】:

    我不清楚你到底想达到什么目的。

    如果您想限制用户仅访问属于他们的数据,您需要让这些数据与用户表中的 ID 相关联。您对表结构的了解很少,但我认为可以安全地假设您有 Courses 表和类似 UsersInCourses 的东西,它们会将许多用户映射到单个课程。您所要做的就是选择分配有用户 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; }
    }
    

    并且您希望有一个操作来返回当前登录用户的食谱

        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);
        }
    

    【讨论】:

    • 感谢您的回复,您对我的表格的假设是正确的,但使用此代码,用户只能访问他的信息。
    • 我不确定我是否遵循您的逻辑,但请查看我更新后的回复。如果您发现在 ASP.NET MVC 上下文中难以习惯 C#,我建议您花一些时间查看mvcmusicstore.codeplex.com 上以 PDF 格式提供的出色教程,这应该可以回答您的大部分问题,因为它描述了机制并提供了好,清晰的代码
    • 在应用程序中有一个 ASP.net 生成的数据库,其中存储了所有用户我是否必须连接我的表中的 UserID pk 例如如果您创建了一个表用户,您的烹饪食谱(作者)是否需要将 asp.net 表用户的 ID 链接到我的 ID。谢谢
    • 你不必这样做,但如果你这样做,它会让事情变得更容易,更不会出错。如果您不想 - 您可以获取当前登录的用户密钥 Membership.GetUser().ProviderUserKey (请参阅更新的答案)
    猜你喜欢
    • 2014-05-30
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2011-06-07
    • 2010-10-22
    • 2013-02-19
    相关资源
    最近更新 更多