簡體   English   中英

表單未在ASP.NET Core MVC 2.2.1中提交

[英]Form not submitting in asp.net core mvc 2.2.1

我在ASP.NET-core 2.2.1 MVC中提交表單時遇到問題。 當我單擊“提交”按鈕時,我意識到該表單未提交。 我已經確認驗證令牌在那里,並且已經指出了操作路徑。

我從ViewModel生成了表單。 這是下面的視圖模型

public class SignUpViewModel
{
    [Required]
    public string Surname { get; set; }

    [Required,Display(Name ="Other Names")]
    public string Othernames { get; set; }

    [EmailAddress,Required,Display(Name ="Email Address")]
    public string EmailAddress { get; set; }

    [Display(Name ="Phone Number"),DataType(DataType.PhoneNumber),MinLength(11,ErrorMessage ="Phone number should be a valid GSM Mobile number"),Required]
    public string PhoneNumber { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

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

    public Gender Gender { get; set; }

    [Display(Name ="State of Residence"),Required]
    public int? ResidenceState { get; set; }

    [Display(Name ="Local Government of Residence")]
    public int? ResidenceLga { get; set; }

    [Display(Name ="Date of Birth"),DataType(DataType.Date)]
    public DateTime? DateOfBirth { get; set; }
}

表格在這里

<form asp-action="signup" method="POST">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="Surname" class="control-label"></label>
            <input asp-for="Surname" class="form-control" />
            <span asp-validation-for="Surname" class="text-danger"></span>
        </div>
       <div class="form-group">
            <label asp-for="Othernames" class="control-label"></label>
            <input asp-for="Othernames" class="form-control" />
            <span asp-validation-for="Othernames" class="text-danger"> 
</span>
        </div>
        <div class="form-group">
            <label asp-for="EmailAddress" class="control-label"></label>
            <input asp-for="EmailAddress" class="form-control" />
            <span asp-validation-for="EmailAddress" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Password" class="control-label"></label>
            <input asp-for="Password" class="form-control" />
            <span asp-validation-for="Password" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="ConfirmPassword" class="control-label"></label>
            <input asp-for="ConfirmPassword" class="form-control" />
            <span asp-validation-for="ConfirmPassword" class="text-danger"> 
   </span>
        </div>
        <div class="form-group">
            <label asp-for="Gender" class="control-label"></label>
            <select asp-for="Gender" class="form-control" asp- 
     items="@Html.GetEnumSelectList<Gender>()">
                <option selected="selected" value="">--Select--</option>
            </select>
            <span asp-validation-for="Gender" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="ResidenceState" class="control-label"></label>
            <select asp-for="ResidenceState" class="form-control" asp- 
 items="ViewBag.StateId">
  <option value="">-Select-</option>
  </select>
            <span asp-validation-for="ResidenceState" class="text-danger"> 
 </span>
        </div>
        <div class="form-group">
            <label asp-for="ResidenceLga" class="control-label"></label>
            <select asp-for="ResidenceLga" class="form-control"><option 
 value="">-Select State First-</option></select>
            <span asp-validation-for="ResidenceLga" class="text-danger"> 
</span>
        </div>
        <div class="form-group">
            <label asp-for="DateOfBirth" class="control-label"></label>
            <input asp-for="DateOfBirth" class="form-control" />
            <span asp-validation-for="DateOfBirth" class="text-danger"> 
   </span>
        </div>
        <div class="form-group">
            <input type="submit" value="Register" class="btn btn-primary" />
        </div>
    </form>

控制器如下:

public IActionResult Signup()
    {
        ViewData["StateId"] = new SelectList(_context.States, "Id", "Name");

        return View();
    }

    [HttpPost]
    //[ValidateAntiForgeryToken]
    public async Task<ActionResult> Signup(SignUpViewModel model)
    {
        if (EmailExists(model.EmailAddress))
        {
            ModelState.AddModelError("", "This email address is already registered with us.");
        }

        if (ModelState.IsValid)
        {
            try
            {
                Enrollee enrollee = new Enrollee {
                    Surname=model.Surname,
                    OtherNames=model.Othernames,
                    Email=model.EmailAddress,
                    Gender=model.Gender,
                    StateId=model.ResidenceState,
                    LgaId=model.ResidenceLga,
                    DateOfBirth=model.DateOfBirth
                };

                var result = await _userManager.CreateAsync(enrollee, model.Password);
                if (result.Succeeded)
                {

                    //send password the new staff's email

                    var body = "<p>Email From {0} ({1})</p><p>Message:</p><p>{2}</p>";
                    var baseurl = $"{Request.Scheme}://{Request.Host}{Request.PathBase}";
                    var loginurl = baseurl + "/User/Login";
                    var msg = "Congratulations! " + model.Othernames + "," + "<br />" + "You have just been registered on the eSchool portal." + "<br />" + "Use this email as your login username and the password you registered with to login to the portal:" + "<br />" + "<br />" + "Click <strong><a href='" + loginurl + "'>here</a></strong> to login" + "\r" + "\r";

                    var message = string.Format(body, "eSchool Portal", "registration@eschoolnigeria.com", msg);
                    await _emailSender.SendEmailAsync(model.EmailAddress, "Registration on eSchool portal", message);

                    return RedirectToAction(nameof(Signup));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, 
error.Description);
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError("",e.Message.ToString());
            }
        }
        else
        {
            ModelState.AddModelError(string.Empty, "Something went wrong 
with the process. Please retry");
        }
        return RedirectToAction(nameof(Signup));

    }

我將不勝感激任何使表格無法提交的錯誤指導。

謝謝

[HttpPost] Signup(...)操作中,您總是返回RedirectToAction(nameof(Signup)) ,這將導致您以空白表格返回同一頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM