我正在编写一个网络应用程序(在 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
循环来检索表单的数据。 参考这个: 点击这里