Asp.net mvc 如何在asp.net MVC4中登录?
我正在登录我的网站,但它不工作。 注册成功。 这是我的行动方法Asp.net mvc 如何在asp.net MVC4中登录?,asp.net-mvc,Asp.net Mvc,我正在登录我的网站,但它不工作。 注册成功。 这是我的行动方法 [HttpGet] public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(Registration U) { Response.Write(U.Username); // it
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(Registration U)
{
Response.Write(U.Username); // it print the name but not go inside the condition
if (ModelState.IsValid)
{ // not come here why?
Response.Write("inin");
ModelState.Clear();
using (Database1Entities db = new Database1Entities())
{
var user = db.Registrations.Where(a => a.Username.Equals(U.Username) && a.Password.Equals(U.Password)).FirstOrDefault();
if (user != null)
{
Session["LoggedUserID"] = U.Id.ToString();
Session["LoggedUsername"] = U.Username.ToString();
return RedirectToAction("Update");
}
}
}
return View();
}
它收到了我使用response.write(U.username)检查的视图中的值
但是,如果(modelstate.isvalid),为什么它不在条件中出现呢
这是我的看法
@model Final_Year_Project.Models.RegistrationMetaData
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.LabelFor(a=>a.Username)
@Html.TextBoxFor(a=>a.Username)
@Html.ValidationMessageFor(a=>a.Username)
<br>
@Html.LabelFor(a=>a.Password)
@Html.TextBoxFor(a=>a.Password)
@Html.ValidationMessageFor(a=>a.Password)
<br>
<input type="submit" value="Login">
}
@section Scripts{
@Scripts.Render("~/bundles/jqueryval")}
</div>
</body>
</html>
您应该为您的登录表单使用不同的视图模型,因为
RegistrationMetaData
的必填字段比您在登录中发布的字段多(如FirstName
和LastName
)
为登录创建新模型并使用它:
public class LoginMetaData
{
[DataType(DataType.Text)]
[Remote("IsAvailable", "Home", ErrorMessage = "This User name is already exist")]
public string Username { get; set; }
[Required(ErrorMessage = "Please provide Password.", AllowEmptyStrings = false)]
[DataType(DataType.Password)]
public string Password { get; set; }
}
然后在您的视图中使用它:
@model LoginMetaData
在控制器中:
[HttpPost]
public ActionResult Index(LoginMetaData U)
{
Response.Write(U.Username); // it print the name but not go inside the condition
if (ModelState.IsValid)
{ // not come here why?
Response.Write("inin");
ModelState.Clear();
using (Database1Entities db = new Database1Entities())
{
var user = db.Registrations.Where(a => a.Username.Equals(U.Username) && a.Password.Equals(U.Password)).FirstOrDefault();
if (user != null)
{
Session["LoggedUserID"] = U.Id.ToString();
Session["LoggedUsername"] = U.Username.ToString();
return RedirectToAction("Update");
}
}
}
return View();
}
这是因为您的模型未处于有效状态。你能把它寄出去吗?我已经把模型寄出去了。
[HttpPost]
public ActionResult Index(LoginMetaData U)
{
Response.Write(U.Username); // it print the name but not go inside the condition
if (ModelState.IsValid)
{ // not come here why?
Response.Write("inin");
ModelState.Clear();
using (Database1Entities db = new Database1Entities())
{
var user = db.Registrations.Where(a => a.Username.Equals(U.Username) && a.Password.Equals(U.Password)).FirstOrDefault();
if (user != null)
{
Session["LoggedUserID"] = U.Id.ToString();
Session["LoggedUsername"] = U.Username.ToString();
return RedirectToAction("Update");
}
}
}
return View();
}