我正在制作一个项目,其中有多个用户,每个用户可以拥有任意数量的课程。当用户登录时,我想只显示该特定用户的课程。表及其记录是 -
用户
课程
UserCourse
在家庭控制器中,我将代码编写为 -
[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();
}
}
我在登录后获取所有用户课程时只需要用户详细信息。我该怎么办?请帮忙。
答案 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);
}
}