首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将表单数据从bootstrap模式发布到后端?

如何将表单数据从bootstrap模式发布到后端?
EN

Stack Overflow用户
提问于 2018-01-31 01:59:36
回答 1查看 1.4K关注 0票数 1

我有一个登录和注册表单,当在常规视图上使用时,它可以正常工作,但是,当我将该表单放入模式(Bootstrap v3)中时,它无法发布数据(提交时调试器显示所有字段为空)。

代码语言:javascript
复制
   @model myNamespace.Models.AllUserViewModels
    <div class="container">
  <div class="modal fade" id="LoginModal" tabindex="-1" role="dialog"      keyboard="true" aria-labelledby="LoginModal" aria-hidden="true">
    <div class="modal-dialog modal-sm" role="dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4>Login</h4>
        </div>
        <div class="modal-body">
          <form asp-controller="User" asp-action="LoginSubmit" method="post" class="form-group">
            <label asp-for="Log.Email">Email</label>
            <input asp-for="Log.Email" placeholder="Email Address" class="form-control" id="Email"> 
            <span asp-validation-for="Log.Email"></span>


            <label asp-for="Log.Password">Password</label>
            <input asp-for="Log.Password" placeholder="Password" class="form-control" id="Password"> 
            <span asp-validation-for="Log.Password"></span>

            <span>@ViewBag.loginError</span>

            <br>

            <button type="submit" class="btn btn-primary">Submit</button>

          </form>
        </div>

      </div>
    </div>
  </div>
</div>
  <!--End Login Modal -->

编辑我的表单没有发送到控制器的原因是因为我忘记在控制器方法中添加"POST“动词。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 03:30:22

我找到了我的问题的解决方案。我的数据没有传递到后端的原因是因为在我的控制器中,我忘记了更改作为我的方法的参数使用的View Model的名称,并且在尝试执行db调用、密码验证等操作时忘记更改对我的模型的引用。

代码语言:javascript
复制
        [HttpPost]
        [Route("LoginSubmit")]
        public IActionResult LoginSubmit(AllUserViewModels model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    // If there are no errors upon form submit check db for proper creds.
                    User LoggedUser = _context.Users.SingleOrDefault(u => u.Email == model.Log.Email);
                    var Hasher = new PasswordHasher<User>();
                    // Check    hashed password.
                    if (Hasher.VerifyHashedPassword(LoggedUser, LoggedUser.Password, model.Log.Password) != 0)
                    {
                        // Set user id in session for use in identification, future db calls, and for greeting the user.
                        HttpContext.Session.SetInt32("LoggedUserId", LoggedUser.Id);

                        return RedirectToAction("Account");
                    }
                    else
                    {
                        ViewBag.loginError = "Sorry, your password was incorrect.";
                        return View("landing");
                    }
                }
                // If no proper creds redirect to login page and return error.
                catch
                {
                    ViewBag.loginError = "Sorry, your email or password were incorrect.";
                    return View("landing");
                }
            }
            // If form submit was illegal redirect to login and display model validation errors.
            else
            {
                return View("landing");
            }
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48527744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档