比较两个表列的值以显示列表MVC4

时间:2015-04-15 09:34:19

标签: database entity-framework asp.net-mvc-4 controller

我在数据库中有两个表,一个表叫做Booking。该表将记录用户可以通过webstie上的表单输入的数据。另一个表称为Account,该表将记录有关用户登录信息的信息。

当用户成功登录网站时,他们会被重定向"到名为Manage的新视图。在管理视图中,我希望能够显示一个仅包含预订表中与该特定帐户相关的信息的表。

我认为在我的Controller中,在Manage ActionResult中,我需要将我的预订表的BookingEmail列中的值与我的账户表的AccountEmail列中的值进行比较。如果匹配,则管理视图中会显示与该电子邮件相关的信息列表。

我知道如何解决这个问题,但实际上让它的代码太有用了我不知道。我是MVC4的新手。

请帮助。

预订模式:

public partial class Booking
{
    public int BookingId { get; set; }
    public string BookingFirstname { get; set; }
    public string BookingSurname { get; set; }
    public string BookingEmail { get; set; }
    public string BookingMobileTel { get; set; }
    public string BookingHomeTel { get; set; }
    public int BookingAge { get; set; }
    public int BookingPassengers { get; set; }
    public int DepartureId { get; set; }
    public int ArrivalId { get; set; }
}

帐户模型:

public partial class Account
{
    public System.Guid AccountId { get; set; }
    public string AccountEmail { get; set; }    // Primary Key
    public string AccountPassword { get; set; }
    public string AccountPasswordSalt { get; set; }
}

删除验证以获得更清晰的图片。

在我的帐户控制器中,使用[HttpPost] LogIn方法:

[HttpPost]
    public ActionResult LogIn(Account user)
    {
        if (ModelState.IsValid)
        {
            if (isValid(user.AccountEmail, user.AccountPassword))
            {
                FormsAuthentication.SetAuthCookie(user.AccountEmail, false);

                return RedirectToAction("Index", "Home");                            
            }
            else
            {
                ModelState.AddModelError("", "Login Data does not exist, Please Register");
            }
        }

        return View(user);
    }

更新:

为了转到HomeController中的Manage View,我使用了它:

[HttpPost]
    public ActionResult LogIn(Account user)
    {
        if (ModelState.IsValid)
        {
            if (isValid(user.AccountEmail, user.AccountPassword))
            {
                FormsAuthentication.SetAuthCookie(user.AccountEmail, false);

                bool hasBooking = db.Bookings.Where(b => b.BookingEmail == user.AccountEmail).Any();

                if (hasBooking == true)
                    return RedirectToAction("Manage", "Home");
                else
                    return RedirectToAction("Book", "Home");                            
            }
            else
            {
                ModelState.AddModelError("", "Login Data does not exist, Please Register");
            }
        }

        return View(user);
    }

更新:

所以我已经使用TempData将AccountEmail从AccountController传递给HomeController:

帐户管理员:

TempData["user"] = user.AccountEmail;

家庭控制器:

public ActionResult Manage()
{
    var user = TempData["user"] as string;
    IEnumerable<Booking> bookings = db.Bookings.Where(b => b.BookingEmail == user);
    return View(bookings);
}

0 个答案:

没有答案