ASP.NET MVC 表单不向控制器发送数据

ASP.NET MVC form does not send data to controller

我有一个 Index.cshtml 页面,它使用 Bootstrap 显示通用登录页面。标记如下所示:

@model Accurecord_Direct.Models.Login.  
@{
    ViewData["Title"] = "Home Page";
    Layout = "~/Views/Shared/_NoMenu.cshtml";
}
<body>
@using (Html.BeginForm("LogIn", "Home", FormMethod.Post))
{
<section class="vh-100" style="background-color: #508bfc;">
    <div class="container py-5 h-100">
        <div class="row d-flex justify-content-center align-items-center h-100">
            <div class="col-12 col-md-8 col-lg-6 col-xl-5">
                <div class="card shadow-2-strong" style="border-radius: 1rem;">
                    <div class="card-body p-5 text-center">

                        <h3 class="mb-5">Log in</h3>

                        <div class="form-outline mb-4">
                            <input type="text" id="UserID" class="form-control form-control-lg" />
                            <label class="form-label" for="UserID">User ID</label>
                        </div>

                        <div class="form-outline mb-4">
                            <input type="password" id="Password" class="form-control form-control-lg" />
                            <label class="form-label" for="Password">Password</label>
                        </div>

                        <button class="btn btn-primary btn-lg btn-block" type="submit">Login</button>

                        <hr class="my-4">

                        <button class="btn btn-lg btn-block btn-primary" style="background-color: #dd4b39;" type="submit" asp-action="ForgotUserID"><i class="fab fa-google me-2"></i> Forgot User ID</button>
                        <button class="btn btn-lg btn-block btn-primary mb-2" style="background-color: #3b5998;" type="submit" asp-action="ForgotPassword"><i class="fab fa-facebook-f me-2"></i>Forgot Password</button>

                    </div>
                </div>
            </div>
        </div>
    </div>
</section>
}
</body>

我的模型是这样的:

using System;  

namespace Accurecord_Direct.Models
{
    public class Login
    {
        public string UserID { get; set; }
        public string Password { get; set; }
    }
}

我的任何控制器都是这样的:

    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult LogIn(IFormCollection form, [FromForm] Login newLogin)
    {
        return RedirectToAction("Index");
    }

    [HttpPost]
    [Route("ForgotUserID")]
    public IActionResult ForgotUserID()
    {
        return View("ForgotUserID");
    }

    [HttpPost]
    [Route("ForgotPassword")]
    public IActionResult ForgotPassword()
    {
        return View("ForgotPassword");
    }

我 运行 我的应用程序在控制器的 LogIn 操作方法中的 return 处设置了一个断点。当遇到断点时,我查看变量 newLogin 的手表 window。当我展开变量时,我看到了两个属性 UserIDPassword,但它们的值都是 (null)。我在点击提交按钮之前在表单中输入字母。

为什么表单数据没有传递给控制器​​?

谢谢!

修正动作

    [HttpPost]
    public ActionResult LogIn (Login newLogin)
    {
        return RedirectToAction("Index");
    }

并添加 asp-for 视图输入

<div class="form-outline mb-4">
  <input type="text" asp-for="UserId" class="form-control form-control-lg"/>
<label class="form-label" for="UserID">User ID</label>
</div>
 <div class="form-outline mb-4">
<input type="password" asp-for=Password  class="form-control form-control-lg" />
 <label class="form-label" for="Password">Password</label>
 </div>