我在数据库中有两个表,一个表叫做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);
}