Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NETMVC。将数据从视图传输到控制器而不丢失数据_C#_Asp.net Mvc - Fatal编程技术网

C# NETMVC。将数据从视图传输到控制器而不丢失数据

C# NETMVC。将数据从视图传输到控制器而不丢失数据,c#,asp.net-mvc,C#,Asp.net Mvc,我是asp.net的新手,目前正在尝试制作一个表单,向我的数据库中添加一些数据。 当我试图将数据从视图发送到控制器中的[HttpPost]方法时,由于某种原因,我的帖子中的所有信息都丢失了。让你大致了解一下我的数据结构是什么样子的:我正在学习一门课程,它包含一系列的问题对象和一系列的答案对象。 因此,这就是我构建代码的方式。 调用视图: ViewBag.QuestionId = -1; return View("QuestionForms", _context.Courses.Include(c

我是asp.net的新手,目前正在尝试制作一个表单,向我的数据库中添加一些数据。 当我试图将数据从视图发送到控制器中的[HttpPost]方法时,由于某种原因,我的帖子中的所有信息都丢失了。让你大致了解一下我的数据结构是什么样子的:我正在学习一门课程,它包含一系列的问题对象和一系列的答案对象。 因此,这就是我构建代码的方式。 调用视图:

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方法无法识别帖子中的数据或忽略了这些数据,我会很高兴

我想指出,这篇文章似乎是正确的,如我的浏览器中的“网络”选项卡所示:
问题是
模型。问题[questionIndex]
,起始索引应该从
0
开始,而不是
1

您应该更正客户名称,如下所示

@Html.TextAreaFor(m => Model.Questions[questionIndex].PossibleAnswers[k].AnswerString, new { @class = "form-control", Name = "Questions["+ k + "].PossibleAnswers["+ k + "].AnswerString" })

您可以添加get方法的屏幕截图吗?请发布实际代码,而不是屏幕截图。@3抱歉,我已经发布了。请给我们您的
课程
类结构。我不确定索引,因为我的数据库中已经有1个条目,所以1个索引是第2个条目。你能解释一下为什么需要一个名字来修复它吗?默认情况下,它不应该在没有它的情况下工作并将其放入当前模型中,然后将其作为ActionResult的参数返回给控制器吗?只是为了更好地理解。它也适用于
@Html.TextAreaFor(m=>Model.Questions[0]。可能的答案[k]。AnswerString,新的{@class=“form control”}
问题是,我总是将[0]元素加载到表单中,而不是我想要编辑的问题。那么有没有一种动态方法来获取[x]在将工作模型作为参数返回给ActionResult时加载到表单的元素?(因为它显然需要[0])
@Html.TextAreaFor(m => Model.Questions[questionIndex].PossibleAnswers[k].AnswerString, new { @class = "form-control", Name = "Questions["+ k + "].PossibleAnswers["+ k + "].AnswerString" })