Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 会话状态MVC3_C#_Asp.net_Asp.net Mvc 3_Razor - Fatal编程技术网

C# 会话状态MVC3

C# 会话状态MVC3,c#,asp.net,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc 3,Razor,我有一个问题,我找不到一个教程或一些代码,我可以做一些会话状态。例如,我想创建一个应用程序,当用户登录时,他或她只能查看这些信息,例如,一个学生查看他的成绩,其他学生看不到这些信息。我在去年的VB 2008中实现了这一点,但需要MVC3的帮助,因为它与我使用的C语言不同。在VB 2008中,我实现了从ASP.net数据库用户连接一个表,并通过外键连接到我的employee表。并添加了以下代码: Session("ID") = objUser Dim db As New DataCla

我有一个问题,我找不到一个教程或一些代码,我可以做一些会话状态。例如,我想创建一个应用程序,当用户登录时,他或她只能查看这些信息,例如,一个学生查看他的成绩,其他学生看不到这些信息。我在去年的VB 2008中实现了这一点,但需要MVC3的帮助,因为它与我使用的C语言不同。在VB 2008中,我实现了从ASP.net数据库用户连接一个表,并通过外键连接到我的employee表。并添加了以下代码:

  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。我只是展示了这段代码,所以人们知道我不是在追求免费代码,我已经尝试了一个没有成功的努力


感谢您对人们的友好帮助

我不清楚您到底想实现什么目标

如果要限制用户仅访问属于他们的数据,则需要在users表中将此数据与其ID关联。关于表结构,您所知甚少,但我认为可以安全地假设您有一个Courses表和类似UsersInCourses的东西,它可以将许多用户映射到单个课程。您所要做的就是选择分配了用户Id的课程。要获得当前登录的用户,您只需参考

User.Identity.Name
在应用程序的代码中

让我们假设你的班级正在烹饪Receipe:

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,我建议您花些时间来阅读PDF格式的优秀教程,它可以回答您的大多数问题,因为它描述了机制并提供了良好的,清除代码在应用程序中有一个ASP.net生成的数据库,其中存储了所有用户。我是否必须在我的表中连接用户ID pk?例如,您的烹饪食谱如果有一个表用户,您已经创建了作者,我需要将ASP.net表用户的ID链接到我的。感谢您不必这样做,但是如果您这样做,将会使事情变得更简单,并且更加防错。如果您不想-您可以只获取当前登录的用户密钥Membership.GetUser.ProviderUserKey查看更新的答案