Emi*_*ahl 4 asp.net-mvc razor asp.net-mvc-4
我对MVC有一个非常奇怪的问题.我的模型一直空着.它可能很简单,但我找不到问题.
我的模型看起来像这样:
public class LoginModel
{
public string Username;
public string Password;
}
Run Code Online (Sandbox Code Playgroud)
我的控制器是这样的:
[HttpGet]
public ActionResult Login()
{
return View();
}
[HttpPost]
public ActionResult Login(LoginModel loginTest)
{
if (loginTest.Username != "x" && loginTest.Password != "y")
{
ModelState.AddModelError("a", "Login failed.");
return View(loginTest);
}
else
{
return RedirectToAction("Home", "Welcome");
}
Run Code Online (Sandbox Code Playgroud)
}
这个观点也很简单.
@model LoginSolution.Models.LoginModel
@{
Layout = null;
}
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Login</title>
</head>
<body>
@using (Html.BeginForm("Login", "Home"))
{
<div> <span>Username : </span>
@Html.EditorFor(model => model.Username)
<br />
<span>Password : </span>
@Html.EditorFor(model => model.Password)
<br />
@Html.ValidationSummary()
<br />
<input type="submit" value="Login" name="Login" />
</div>
}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这不是关于安全性或最佳实践的问题.这只是一个问题,为什么模型在提交时会自动返回为空.
小智 11
您的模型包含字段,而不是属性(没有getter/setter),因此模型绑定器无法设置值.将模型更改为
public class LoginModel
{
public string Username { get; set; }
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)