【发布时间】:2014-03-13 06:49:57
【问题描述】:
所以我正在尝试进行自定义登录。我有一个登录页面,我想检查用户名和密码是否与我的 sql 数据库匹配。尝试在文本框中提取用户名并将其与数据库中的用户名匹配时遇到问题。我收到一条错误消息,提示 包含路径表达式必须引用在类型上定义的导航属性。对参考导航属性使用虚线路径,对集合导航属性使用 Select 运算符。这是什么意思?
这是我的用户控制器:
[HttpGet]
public ActionResult Login()
{
return View();
}
[HttpPost]
public ActionResult Login(Models.User user)
{
if (ModelState.IsValid)
{
if (IsValid(user.UserName, user.Password))
{
FormsAuthentication.SetAuthCookie(user.UserName, false);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", "Login Data is incorrect");
}
}
return View(user);
}
private bool IsValid(string UserName, string Password)
{
bool isValid = false;
var user = db.User.Include(u => u.UserName == UserName);
if (user != null)
{
isValid = true;
}
return isValid;
}
错误在于 var user = db.User.Include(u => u.UserName == UserName);
这是我的cshtml:
@model MyApp.Models.User
@{
ViewBag.Title = "Login";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true, "Login Failed. Check your login details.");
<div>
<fieldset>
<legend>Login Form</legend>
<div>@Html.LabelFor(u=>u.UserName)</div>
<div>@Html.TextBoxFor(u => u.UserName)
@Html.ValidationMessageFor(u => u.UserName)
</div>
<div>@Html.LabelFor(u => u.Password)</div>
<div>
@Html.PasswordFor(u => u.Password)
@Html.ValidationMessageFor(u => u.Password)
</div>
<input type="Submit" value="Log In" />
</fieldset>
</div>
}
这是用户模型:
public class User
{
[Key]
public int UserId { get; set; }
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[Required]
[StringLength(20, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
}
}
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-4 login