加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 为什么Model Binding在我的POST动作方法中不起作

发布时间:2020-12-16 07:29:38 所属栏目:asp.Net 来源:网络整理
导读:我对MVC有一个非常奇怪的问题. 我的模型一直空着. 它可能很简单,但我找不到问题. 我的模型看起来像这样: public class LoginModel{ public string Username; public string Password;} 我的控制器是这样的: [HttpGet]public ActionResult Login(){ return
我对MVC有一个非常奇怪的问题.
我的模型一直空着.
它可能很简单,但我找不到问题.

我的模型看起来像这样:

public class LoginModel
{
   public string Username;
   public string Password;
}

我的控制器是这样的:

[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");
       }

}

这个观点也很简单.

@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>

这不是关于安全性或最佳实践的问题.
这只是一个问题,为什么模型在提交时会自动返回为空.

解决方法

您的模型包含字段,而不是属性(没有getter / setter),因此模型绑定器无法设置值.将模型更改为

public class LoginModel
{
   public string Username { get; set; }
   public string Password { get; set; }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读