我有一个剃刀视图,一旦在forloop中丢失变量范围。它工作正常,直到我添加表标签。因此,我对ViewModel不同部分的所有调用都不再有效。如果还有其他有助于了解的信息,请告诉我。
@model Auditor_Evaluations_MVC.ViewModels.EvaluationViewModel
@using (Html.BeginForm())
{
<div>
<table class="table table-condensed" style="width:825px;">
for(int i = 0; i < Model.QuestionGroup.Count; i++)
{
var questionGroup = Model.QuestionGroup[i];
@Html.HiddenFor(m => Model.QuestionGroup[i].GroupName)
@Html.HiddenFor(m => Model.QuestionGroup[i].GroupId)
<thead>
<tr>
<th class="text-left">@Html.Label(questionGroup.GroupName) </th>
<th class="text-center">Excellent</th>
<th class="text-center">Good</th>
<th class="text-center">Fair</th>
<th class="text-center">Poor</th>
<th class="text-center">N/A</th>
</tr>
</thead>
var questions = questionGroup.Questions;
for(int j = 0; j < questions.Count; j++)
{
@Html.HiddenFor(m => Model.QuestionGroup[i].Questions[j].QuestionName)
<tr>
<td class="text-left">@Html.Label(questions[j].QuestionName) </td>
var questionResponse = questions[j].QuestionResponses;
@for(int k = 0; k < questionResponse.Count; k++)
{
<td class="text-center" style="width:75px">
@Html.RadioButtonFor(m => Model.QuestionGroup[i].Questions[j].SelectedAnswer,questionResponse[k].QuestionValue)
</td>
}
</tr>
}
}
<tr>
<td colspan="6"> </td>
</tr>
<tr>
<td colspan="6"><strong>@Model.GeneralQuestion1Text</strong></td>
</tr>
<tr>
<td colspan="6">@Html.TextAreaFor(m => m.GeneralQuestion1Value)</td>
</tr>
<tr>
<td colspan="6"><strong>2. Additional Comments:</strong></td>
</tr>
<tr>
<td colspan="6">@Html.TextAreaFor(m => m.GeneralQuestion2Value)</td>
</tr>
<tr>
<td colspan="6"><strong>3. Would you like the appropriate audit manager to contact you regarding any or all of the information relayed through this questionnaire? If yes, please include your name and telephone number.</strong></td>
</tr>
<tr>
<td colspan="6">@Html.TextAreaFor(m => m.GeneralQuestion3Value)</td>
</tr>
<tr>
<td colspan="6"><input type="submit" value="Submit"/></td>
</tr>
</table>
</div>
}
答案 0 :(得分:0)
我并不是100%确定你的问题究竟是什么,这个问题有点令人困惑,但你做的事情就是这样的地方:
@Html.HiddenFor(m => Model.QuestionGroup[i].GroupName)
应该用
代替@Html.HiddenFor(m => m.QuestionGroup[i].GroupName)
即。使用m
变量在lambda表达式中表示模型,而不是引用Model
属性。
另外,在这一行:
<table class="table table-condensed" style="width:825px;">
for(int i = 0; i < Model.QuestionGroup.Count; i++)
您需要在@
关键字前添加for
。
答案 1 :(得分:0)
尝试在该Razor块中使用foreach
foreach(var question in Model.QuestionGroup) {
@Html.HiddenFor(m => m.question.GroupName)
@Html.HiddenFor(m => m.question.GroupId)
...
etc.
更新:如果您的模型在发送时未映射到正确的ViewModel,则可能需要查看EditorFor和EditorForModel HTML帮助程序