C# 执行post时没有数据

C# 执行post时没有数据,c#,asp.net-mvc,C#,Asp.net Mvc,AccountController.cs namespace IndividueleOpdracht.Controllers { public class AccountController : Controller { public ActionResult Login() { return View(new Account()); } [HttpPost] public

AccountController.cs

namespace IndividueleOpdracht.Controllers
{
    public class AccountController : Controller
    {
        public ActionResult Login()
        {
            return View(new Account());
        }

        [HttpPost]
        public ActionResult Login(Account model)
        {
            if (!ModelState.IsValid) return View();

            if (model.Login())
            {
                return RedirectToAction("Index", "News");
            }

            return View();
        }
    }
}
Account.cs

namespace IndividueleOpdracht.Models
{
    public class Account
    {
        [Required]
        public string Email;

        [Required]
        public string Password;

        public bool Login()
        {
            if (Email == "test" && Password == "test")
            {
            return true;
            }

            return false;
        }
    }
}
Login.cshtml

@model IndividueleOpdracht.Models.Account

@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @class = "form-signin" }))
{
    <h2 class="form-signin-heading">Login</h2>
    <label for="inputEmail" class="sr-only">Email address</label>
    @Html.TextBoxFor(model => model.Email, new { @type = "email", @id = "inputEmail", @class = "form-control", @placeholder = "Email adres" })
    <label for="inputPassword" class="sr-only">Wachtwoord</label>
    @Html.PasswordFor(model => model.Password, new { @id = "inputPassword", @class = "form-control", @placeholder = "Wachtwoord" })
    <div class="checkbox">
        <label>
            <input type="checkbox" value="remember-me"> Onthoud mij
        </label>
    </div>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button>
}
@model individualeopdracht.Models.Account
@使用(Html.BeginForm(“Login”、“Account”、FormMethod.Post、new{@class=“form signin”}))
{
登录
电子邮件地址
@Html.TextBoxFor(model=>model.Email,新的{@type=“Email”、@id=“inputEmail”、@class=“form control”、@placeholder=“Email adres”})
瓦赫特伍德
@Html.PasswordFor(model=>model.Password,新的{@id=“inputPassword”,@class=“form control”,@placeholder=“Wachtwoord”})
安图德mij
登录
}
当我发布帖子时,它会说模型参数为空。电子邮件为空,密码也为空

ModelState.IsValid为true

谁能告诉我我做错了什么


谢谢

将您的视图模型类更改为具有设置/获取并使其成为公共属性

public class Account
{
    [Required]
    public string Email {set;get;};

    [Required]
    public string Password {set;get;};

}
如果不将它们保留为属性(使用
set
),则MVC model binder在读取发布的表单数据后无法将值设置为这些属性

另外,要查看验证摘要,可以使用
Html.ValidationSummary()
方法。因此,当模型验证失败时,您将看到一个属性验证错误列表

@using (Html.BeginForm())
{
    @Html.ValidationSummary()
    @Html.TextBoxFor(s=>s.Email)
    <input type="submit" />
}
@使用(Html.BeginForm())
{
@Html.ValidationSummary()
@Html.TextBoxFor(s=>s.Email)
}

您不应该指定
@id
,MVC会自动为它们提供id。您应该使用
@Html.LabelFor()
而不是为标签编写自己的id?如果我删除ID,它会解决问题吗?你在点击提交之前填写表单字段了吗?我很确定它关闭了
name
,而不是ID,但我只是给你一些其他建议,你应该在这期间做。