当用户登录时如何获取特定用户的详细信息?

时间:2015-07-15 04:07:40

标签: entity-framework sql-server-2008 asp.net-mvc-4

我正在制作一个项目,其中有多个用户,每个用户可以拥有任意数量的课程。当用户登录时,我想只显示该特定用户的课程。表及其记录是 -

用户

  • 用户ID
  • 用户名
  • 密码

课程

  • CourseId
  • CourseName

UserCourse

  • 编号
  • 用户ID
  • CourseId

在家庭控制器中,我将代码编写为 -

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(User u)
{
    if (ModelState.IsValid)
    {
        using (Entities dc = new Entities())
        {
            var v = dc.Users.Where(a => a.UserName.Equals(u.UserName) && a.Password.Equals(u.Password)).FirstOrDefault();
            if (v != null)
            {
                Session["LoggedUserID"] = v.UserId.ToString();
                Session["LoggedUserName"] = v.UserName.ToString();
                return RedirectToAction("Index","Course");
            }
        }
    }
    return View(u);
}

然后我使用名为UserController的Entity Framework创建了一个带有模板MVC控制器的新控制器,其中包含读/写操作和视图。

在UserController中,我编写了用于获取特定用户课程详细信息的代码 -

public class UserController : Controller
{
    private Entities db = new Entities();

    public ActionResult Index()
    {
        int userId = (int)Session["LoggedUserID"];

        var user = db.Users.SingleOrDefault(u=>u.UserId==userId);
        if (user != null)
            return View(user); // this

        return View();
    }
}

我在登录后获取所有用户课程时只需要用户详细信息。我该怎么办?请帮忙。

1 个答案:

答案 0 :(得分:0)

我终于解决了。我必须将userId以及该用户的课程传递到视图中。我最新的工作代码如下所示。希望它能帮助别人。

<强> HomeController中:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(User u)
{
    if (ModelState.IsValid)
    {
        using (DetailsEntities dc = new DetailsEntities())
        {
            var v = dc.Users.Where(a => a.UserName.Equals(u.UserName) && a.Password.Equals(u.Password)).FirstOrDefault();
            if (v != null)
            {
                Session["User"] = v;
                return RedirectToAction("Index", "Course");
            }
        }
    }
    return View(u);
}

<强> CourseController:

public class CourseController : Controller
{
    private Entities db = new Entities();

    public ActionResult Index()
    {
        User user = (User)Session["User"];
        var usr = db.Users.Find(user.UserId);
        if (Session["User"] != null)
        {
            var course = db.UserCourses.Where(u => u.UserId == user.UserId);
            if (usr != null)
                return View(course);
        }
        return View(usr);
    }
}