ASP.Net 按钮不调用 Post 方法
ASP.Net button doesn't call Post method
我无法将数据从我的视图传递到我的 Details 方法,该方法将值发送到邮件方法。
我的视图包含一个表单,用户可以在其中发表评论。当按下发送按钮时,它将表单中的值发送到 [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);
}
Post
[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);
}
Alexander 的评论是解决方案,在重用 属性 时遇到了一些问题,但 hiddenfor 也解决了这个问题,现在问题已解决。
我无法将数据从我的视图传递到我的 Details 方法,该方法将值发送到邮件方法。
我的视图包含一个表单,用户可以在其中发表评论。当按下发送按钮时,它将表单中的值发送到 [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);
}
Post
[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);
}
Alexander 的评论是解决方案,在重用 属性 时遇到了一些问题,但 hiddenfor 也解决了这个问题,现在问题已解决。