如何在同一页面上填写并提交三个表单(基于同一模型)从视图到控制器?



我正在编写一个网络应用程序(在 mvc 中(,其中"测验大师"可以添加问题。测验包含 3 个问题。

我想实现测验主持人可以在同一页面/表单上添加两个 3 个问题。

问题是我只知道如何提交一个问题,而不是三个问题。

所以我创建了一个视图(AddQuestions(,两个模型(Question和Quiz(和一个控制器(QuizController(。

视图使用问题模型进行强类型化。 在这个观点上,我有一个表格。目前我有一个 for 循环,循环到三个,因此可以填写 3 个问题。它们都是一种形式。

public class Question
{
public int Id { get; set; }
public string Question { get; set; }
public double Points { get; set; }
}

测验类包含 Id、日期和字段,用于保存三个问题的 Id

视图

<form asp-action="AddQuestions" method="post">
@{
for (var i = 0; i < 3; i++)
{
if (i == 0)
{
<span>Question 1</span>
}
else if (i == 1)
{
<span>Question 2</span>
}
else if (i == 2)
{
<span>Question 3</span>
}
<p>
<label asp-for="Question[i]">Question</label>
<input asp-for="Question[i]" />
</p>
<p>
<label asp-for="Answer[i]">Answer</label>
<input asp-for="Answer[i]" />
</p>
<p>
<label asp-for="Points[i]">Points</label>
<input asp-for="Points[i]" />
</p>
}
}
<button type="submit">Add</button>
</form>

控制器

[HttpPost]
public ViewResult AddQuestions(IEnumerable<Question> questionList)
{
return View();
}

我希望 questionList 的输出是问题列表(因此我可以将这些问题添加到测验中(,但没有输出,因为视图中发生了两个(相同的(错误。

错误是:

"无法将带有 [] 的索引应用于类型为'double'的表达式" 此错误引用 asp-for="Points[i]" 部分。

我怎样才能实现测验主持人可以在同一页面上填写三个问题(模型问题((对于一个测验(?

"视图"页面上的模型如下所示:@model List<Models.Question>从这里取模型计数,如下所示

for(int i=0;i<model.count;i++)
{
//Your form tags
}

在控制器端使用foreach循环来检索表单的数据。 参考这个: 点击这里

最新更新