首页 > 解决方案 > 在 ASP.NET Core 3 中编辑表单模型

问题描述

我在从控制器中的表单中检索数据时遇到问题(我收到所有参数的 Null)。

控制器动作:

public async Task<IActionResult> Register(RegisterFormModel registerFormModel)
        {
            if (ModelState.IsValid)
            {
                ....
            }
        }

我的编辑模型:

public class RegisterFormModel
    {
        [Required]
        [StringLength(100)]
        [DisplayName("First Name")]
        public string RegisterFirstName { get; set; } 

        [Required]
        [EmailAddress]
        [DisplayName("Email")]
        public string RegisterEmail { get; set; }

        [Required]
        [StringLength(100)]
        [DataType(DataType.Password)]
        [DisplayName("Password")]
        public string RegisterPass { get; set; }

        [DataType(DataType.Password)]
        [Compare("RegisterPass", ErrorMessage = "The password and confirmation password do not match.")]
        [DisplayName("Confirm Password")]
        public string ConfirmRegisterPass { get; set; }


    }

我的观点包括:

@model ProjectName.Model.RegisterFormModel
....

....
<div class="wrap-login100 p-l-50 p-r-50 p-t-72 p-b-50">
                <form class="login100-form validate-form" method="post" asp-controller="Account" asp-action="Register">
                    <span class="login100-form-title p-b-59">
                        Sign Up
                    </span>

                    <div class="wrap-input100 validate-input" data-validate="Name is required">
                        <span class="label-input100">Full Name</span>
                        <input asp-for="@Model.RegisterFirstName" class="input100" type="text" name="name" placeholder="Name...">
                        <span asp-validation-for="@Model.RegisterFirstName" class="focus-input100"></span>
                    </div>

                    <div class="wrap-input100 validate-input" data-validate="Valid email is required: ex@abc.xyz">
                        <span class="label-input100">Email</span>
                        <input asp-for="RegisterEmail" class="input100" type="text" name="email" placeholder="Email addess..">
                        <span asp-validation-for="RegisterEmail" class="focus-input100"></span>
                    </div>



                    <div class="wrap-input100 validate-input" data-validate="Password is required">
                        <span class="label-input100">Password</span>
                        <input asp-for="RegisterPass" class="input100" type="text" name="pass" placeholder="************">
                        <span asp-validation-for="RegisterPass" class="focus-input100"></span>
                    </div>

                    <div class="wrap-input100 validate-input" data-validate="Repeat Password is required">
                        <span class="label-input100">Repeat Password</span>
                        <input asp-for="ConfirmRegisterPass" class="input100" type="text" name="repeat-pass" placeholder="*************">
                        <span asp-validation-for="ConfirmRegisterPass" class="focus-input100"></span>
                    </div>

                    <div class="container-login100-form-btn">
                        <div class="wrap-login100-form-btn">
                            <div class="login100-form-bgbtn"></div>
                            <button type="submit" class="login100-form-btn">
                                Sign Up
                            </button>
                        </div>                      
                    </div>
                </form>
            </div>

现在,一旦我点击注册,控制器中 registerFormModel 对象中的所有变量都会收到 NULL。

知道我在做什么错吗?

谢谢

标签: asp.net-core

解决方案


那是名牌;asp-for 应该代替 name 和 id 标签。


推荐阅读