【问题标题】:ASP.Net button doesn't call Post methodASP.Net 按钮不调用 Post 方法
【发布时间】:2019-03-16 16:20:37
【问题描述】:

我一直在将数据从我的视图传递到我的 Details 方法,该方法将值发送到 mail 方法。

我的视图包含一个表单,用户可以在其中发表评论。当按下发送按钮时,它将表单中的值发送到 [Post] Details 方法,该方法又将其发送到 sendMail 方法。

我注意到单击按钮只会清除表单域。我的猜测是 post 方法有问题,因为我没有收到任何错误,并且在调试时我注意到按钮没有调用 Post 方法。

表格

@model Taijitan.Models.ViewModels.LessonDetailsViewModel
...
<form method="post">
    <div class="form-group">
        <label asp-for="Body"></label>
        <input asp-for="Body" class="form-control" id="Body" />
        <span asp-validation-for="Body" class="text-danger"></span>
    </div>
    <button class="btn btn-primary" type="submit">Send</button>
</form>

获取

public IActionResult Details(int id, int? sessionId, int? memberId)
        {
            Lesson lesson = _lessonRepository.GetBy(id);
            LessonDetailsViewModel ldvm = new LessonDetailsViewModel(lesson) { SessionId = sessionId, MemberId = memberId };

            return View(ldvm);
        }

发帖

        [HttpPost]
        public IActionResult Details(LessonDetailsViewModel ldvm)
        {
            if (ModelState.IsValid)
            {
                string lessonTitle = ldvm.Lesson.Name;
                string mailBody = ldvm.Body;
                try
                {
                    SendMail(lessonTitel, mailBody);
                    TempData["message"] = $"Email sent";
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", e.Message);
                    TempData["error"] = "Something went wrong...";
                    return RedirectToAction(nameof(Index));
                }
            }
            return RedirectToAction(nameof(Details), ldvm);
        }

【问题讨论】:

  • 在表单标签中使用asp-actionasp-controller指向Details动作
  • 我还建议查看 HTML 助手,例如 @using (Html.BeginForm)

标签: asp.net post model-view-controller get viewmodel


【解决方案1】:

Alexander 的评论是解决方案,在重用属性时遇到了一些问题,但是 hiddenfor 也解决了这个问题,现在问题已经解决了。

【讨论】:

    猜你喜欢
    • 2019-02-28
    • 2017-10-23
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多