【发布时间】:2020-01-03 14:24:56
【问题描述】:
我对 asp.net 还很陌生,目前正在尝试制作一个表单来将一些数据添加到我的数据库中。 当我尝试将数据从视图发送到控制器中的 [HttpPost] 方法时,遗憾的是,由于某种原因,我的 POST 中的所有信息都丢失了。为了让您大致了解我的数据结构的外观:我正在开设一门课程,其中包含一个问题对象列表,其中包含一个答案对象列表。 因此,这就是我构建代码的方式。 调用视图:
ViewBag.QuestionId = -1;
return View("QuestionForms", _context.Courses.Include(c => c.Questions.Select(q => q.PossibleAnswers)).Single(c => c.Id == course.Id));
这是视图:
@using System
@using CourseTec.Models
@model CourseTec.Models.Course
@{
ViewBag.Title = "QuestionForms";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("SaveQuestions", "Course"))
{
var index = ViewBag.QuestionId;
if (Model.Questions != null && index != -1)
{
}
else
{
Model.Questions.Add(new Question());
index = Model.Questions.Last().Id;
}
var concreteQuestion = Model.Questions.Find(x => x.Id == index);
var questionIndex = Model.Questions.FindIndex(x => x == concreteQuestion);
<div class="form-group">
@Html.LabelFor(m => Model.Questions[questionIndex].question)
@Html.TextAreaFor(m => Model.Questions[questionIndex].question, new { @class = "form-control" })
</div>
for (int k = 0; k < 4; k++)
{
<div class="form-group">
@Html.LabelFor(m => Model.Questions[questionIndex].PossibleAnswers[k].AnswerString)
@Html.TextAreaFor(m => Model.Questions[questionIndex].PossibleAnswers[k].AnswerString, new { @class = "form-control" })
@Html.CheckBoxFor(m => Model.Questions[questionIndex].PossibleAnswers[k].CorrectAnswer)
</div>
}
@Html.HiddenFor(m => m.Id);
<button type="submit" class="btn btn-primary">Save</button>
}
而这个是提交后调用的ActionResult
[HttpPost]
public ActionResult SaveQuestions(Course course)
{
if (course.Id == 0)
{
return HttpNotFound();
}
else
{
var courseInDb = _context.Courses.Include(i => i.Questions.Select(s => s.PossibleAnswers)).Single(c => c.Id == course.Id);
courseInDb.Questions.Add(course.Questions[0]);
}
_context.SaveChanges();
return View("CourseForms",(_context.Courses.Include(i => i.Questions.Select(s => s.PossibleAnswers)).Single(c => c.Id == course.Id)));
}
有趣的是,第一项可以添加而不会丢失数据或任何其他问题,但尝试添加更多会导致此问题。
因此,如果有人能告诉我为什么 ActionResult 方法无法识别或忽略来自 POST 的数据,我会很高兴。
【问题讨论】:
-
能否添加get方法的截图。
-
请发布实际代码,而不是截图。
-
@3Dave 我做到了,对不起。
-
请给我们您的
Course类结构。
标签: c# asp.net-mvc