我希望将我的列表(字符串)的所有值显示到剃刀视图中,但不使用" foreach"方法
我已经得到了这个,但剩下要展示的唯一一个是List<Answer>
。
@Model PoolManager.Models.Question
@{
ViewData["Title"] = "Details";
}
<h2>Details</h2>
<table class="table">
<thead>
<tr class="bg-primary">
<th>Question</th>
<th>Answers</th>
<th>Starting Date</th>
<th>Ending Date</th>
<th>Active</th>
<th>Details</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
<tr>
<td class="bg-info">@Model.Text</td>
@for (int i = 0; i < Model.Answers.Count; i++)
{
String Resposta = Model.Answers[i].ToString();
<td class="bg-info" @Resposta></td>
}
<td class="bg-info">@Model.StartDate</td>
<td class="bg-info">@Model.EndDate</td>
<td>
<a asp-action="Edit" asp-route-id="@Model">Edit</a> |
<a asp-action="Details" asp-route-id="@Model.Id">Details</a> |
<a asp-action="Delete" asp-route-id="@Model.Id">Delete</a>
</td>
</tr>
</tbody>
到目前为止我已经这样了,但它只计算答案的数量,但我需要输出答案而不是它的ID。
@for (int i = Model.Answers.Count; i >= 0; i--)
{
String Resposta = Model.Answers.ToString();
<td class="bg-info" @Resposta></td>
}
我得到的输出是:
system.collections.generic.list`1 [poolmanager.models.answer]
答案 0 :(得分:1)
首先,你应该修复你的表格部分,现在看起来很糟糕。
其次,如果您只想显示1个项目,那么您就无法使用表格,这是无意义的。
第三; 在你的控制器
中
ActionResult MyPage(){}
方法,您可以通过临时用法发送答案列表。
public ActionResult MyPage(){
List<PoolManager.Models.Question> questionList = dbModel.Questions.ToList();
TempData['answerList'] = dbModel.Answers/*.Where(//IF YOU WANT A WHERE CLAUSE YOU CAN WRITE HERE AS WELL)*/.ToList();
//We just sent List<Answers> inside that TempData["answerList"], we will cast it in RazorPage later.
return View(questionList);
}
这样做之后,你应该使用
@model List<PoolManager.Models.Question>
位于Razor页面的顶部。
因为我们正在发送PoolManager.Models.Question
个对象的列表。
在这里,我假设你正在使用Bootstrap Modal。如果没有,您可以将其用作每个Answer单元格中的div和这些div中的另一个表格。
让我们看看我的方式:
<table class="table">
<thead>
<tr class="bg-primary">
<th>Question</th>
<th>Answers</th>
<th>Starting Date</th>
<th>Ending Date</th>
<th>Active</th>
<th>BUTTON LINKS</th>
</tr>
</thead>
<tbody>
@foreach(var question in Model)
{
<tr>
<td class="bg-info">@question.Text</td>
<td class="bg-info">
<a href="#" class="btn btn-primary" data-target="#myModalId_@question.questionId" data-toggle="modal">Answers</a>
</td>
<td class="bg-info">@question.StartDate</td>
<td class="bg-info">@question.EndDate</td>
<td></td>
<td>
<a asp-action="Edit" asp-route-id="@question">Edit</a> |
<a asp-action="Details" asp-route-id="@question.Id">Details</a> |
<a asp-action="Delete" asp-route-id="@question.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>
我们刚刚完成了表格部分,让我们填写内部模态。 您需要将TempData [&#34; answerList&#34;]转换为我们之前在Controller中描述的List类。
@foreach(var question in Model)
{
<div class="modal fade" id="myModalId_@question.questionId" tabindex="-1" role="dialog" aria-labelledby="myModalId_@question.questionId">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalId_@question.questionId">Looking at @question.Text 's answers</h4>
</div>
<div class="modal-body">
@foreach(var answer in ((List<Answers>)TempData["answerList"]).ToList() )
{
<div class="row">
@answer.Text
</div>
}
</div>
</div>
</div>
</div>
}
我希望这对你有很大的帮助。
答案 1 :(得分:1)
在for循环中,您可以使用索引获取每个Answer in列表中的值。例如:
@for (int i = Model.Answers.Count; i >= 0; i--)
{
string Resposta = Model.Answers[i].ToString();
<td class="bg-info">@Resposta</td>
}
上面的代码将帮助您使用for循环本身获取存储在每个索引中的值。