为了账号安全,请及时绑定邮箱和手机立即绑定

C# 使用 Html.RenderPartial 在父视图和子视图之间 ASP.NET MVC

C# 使用 Html.RenderPartial 在父视图和子视图之间 ASP.NET MVC

C#
料青山看我应如是 2022-08-20 17:34:48
在调用时,我收到以下错误:@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) &nbsp @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”中的模型声明匹配,否则将收到运行时错误。


希望它有帮助。


查看完整回答
反对 回复 2022-08-20
?
慕妹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......以在视图中使用模型。


希望这将起作用!


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信