在调用时,我收到以下错误:@Html.RenderPartial("_ChildPartialView")System.Collections.Generic.ICollection'没有名为'ElementAt'的适用方法,但似乎有一个名称为该名称的扩展方法。无法动态调度扩展方法。考虑强制转换动态参数或调用扩展方法而不使用扩展方法语法_Testpaper.cshtml 父视图: for (i = 0; i < Model.Questions.Count;i++) { ViewBag.QuestionNumber = i; Html.RenderPartial("_QuestionDetail"); //Line causing error }_QuestionDetail.cshtml 子视图:@model StandardVBA.ViewModels.AssessmentModel<tr style="padding:4px 0px; background-color:lightskyblue; font-weight:bold;font-family:Cambria;"> <td style="text-align:left;"> Q @(ViewBag.QuestionNumber + 1)   @Model.Questions.ElementAt(ViewBag.QuestionNumber).Question </td> <td style="text-align:center"> ( @Model.Questions.ElementAt(ViewBag.QuestionNumber).Marks ) </td></tr><tr> <td class="questions"> <ol type="A"> @for (int j = 0; j < Model.Questions.ElementAt(ViewBag.QuestionNumber).QuestionDetails.Count; j++) { <li> <div style="display: inline-block; vertical-align: top;"> @Html.CheckBoxFor(m => m.Questions.ElementAt(ViewBag.QuestionNumber).QuestionDetails.ElementAt(j).IsSelected) </div> @Html.DisplayFor(m => m.Questions.ElementAt(ViewBag.QuestionNumber).QuestionDetails.ElementAt(j).Choice) @Html.HiddenFor(m => m.Questions.ElementAt(ViewBag.QuestionNumber).QuestionDetails.ElementAt(j).IsCorrect) </li> } </ol> </td></tr>我还想知道:当子视图在调用中共享相同的模型时,为什么必须在子视图中指定?@ModelRenderPartial
2 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
您需要将模型传递到子部分视图,如下所示:
for (i = 0; i < Model.Questions.Count;i++)
{
ViewBag.QuestionNumber = i;
Html.RenderPartial("_QuestionDetail", Model.Questions[i]); //Line causing error
}
确保 Model.Questions[i] 的类型与子部分视图“@model StandardVBA.ViewModels.AssessmentModel”中的模型声明匹配,否则将收到运行时错误。
希望它有帮助。
慕妹3146593
TA贡献1820条经验 获得超9个赞
首先,您没有将模型传递给子视图,而是在子视图中使用@model,因此通过将模型传递给子视图来修复它,如下所示
for (i = 0; i < Model.Questions.Count;i++)
{
ViewBag.QuestionNumber = i;
Html.RenderPartial("_QuestionDetail", Model); //Line causing error
}
其次,您正在使用@Html.CheckBoxFor(m = > m.Questions.......)在您的详细信息视图中,这是您的子视图,因此您需要声明@model......以在视图中使用模型。
希望这将起作用!
- 2 回答
- 0 关注
- 160 浏览
添加回答
举报
0/150
提交
取消