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

处理 _Partial Page 的请求时发生未处理的异常

处理 _Partial Page 的请求时发生未处理的异常

C#
千巷猫影 2022-10-23 16:33:50
顶级页面视图名为“Create.cshtml”在该页面上,我需要放置多个 _partialViews.cshtml 我使用剃须刀页面制作的:<div>    <row>         <div class="col-md-6">            @await Html.PartialAsync("~/Views/Shared/_PartialDelegates")         </div>         <div class="col-md-6">            @await Html.PartialAsync("~/Views/Shared/_PartialApps")        </div>    </row></div>现在的问题是我正在尝试使用 _PartialDelegates.cs 调用 _PartialDelegates.cshtml_PartialDelegates.cshtml@page@model IMP.ECR.WEB.Views.Shared._PartialDelegatesModel@{}<partial name="_PartialDelegatesView" model="Model.Avengers" />哪个调用_PartialDelegates.cshtml.csusing Microsoft.AspNetCore.Mvc.RazorPages;namespace IMP.ECR.WEB.Views.Shared{    public class _PartialDelegatesModel : PageModel    {    public List<string> Avengers = new List<string>();          public void OnGet()    {        Avengers.AddRange(new[] { "Spiderman", "Iron Man", "Dr. Stange", "The Hulk" });    }    }  }}然后在 _PartialDelegatesView.cshtml 我有以下内容:@model List<string><div class="col-md-12">    <h2>Avengers</h2>    <table class="table table-boardered table-striped" style="width:100%">        @foreach (var item in Model)        {            <tr>                <td>@item</td>            </tr>        }    </table></div>
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

将 Razor 页面加载为部分视图似乎是不可能的,请参阅此处。Razor 页面不能用作View Components的替代品。按照以下步骤创建一个PartialDelegatesViewComponent,它可以做你想做的事情。


1.创建ViewComponens文件夹并在文件夹中添加PartialDelegates.cs类


public class PartialDelegates:ViewComponent

{

    public IViewComponentResult Invoke()

    {

        List<string> Avengers = new List<string>();

        Avengers.AddRange(new[] { "Spiderman", "Iron Man", "Dr. Stange", "The Hulk" });

        return View(Avengers);

    }


}

2.Default.cshtml添加到路径 /Views/Shared/Components/PartialDelegates/Default.cshtml(如果文件夹不存在则创建)


@model List<string>

<h1>Default</h1>

<partial name="_PartialDelegatesView" model="Model" />

3.在你的 Create.cshtml 中,调用视图组件


@await Component.InvokeAsync("PartialDelegates")


查看完整回答
反对 回复 2022-10-23
?
呼如林

TA贡献1798条经验 获得超3个赞

将 Razor 页面加载为部分视图似乎是不可能的,请参阅此处。Razor 页面不能用作View Components的替代品。按照以下步骤创建一个PartialDelegatesViewComponent,它可以做你想做的事情。


1.创建ViewComponens文件夹并在文件夹中添加PartialDelegates.cs类


public class PartialDelegates:ViewComponent

{

    public IViewComponentResult Invoke()

    {

        List<string> Avengers = new List<string>();

        Avengers.AddRange(new[] { "Spiderman", "Iron Man", "Dr. Stange", "The Hulk" });

        return View(Avengers);

    }


}

2.Default.cshtml添加到路径 /Views/Shared/Components/PartialDelegates/Default.cshtml(如果文件夹不存在则创建)


@model List<string>

<h1>Default</h1>

<partial name="_PartialDelegatesView" model="Model" />

3.在你的 Create.cshtml 中,调用视图组件


@await Component.InvokeAsync("PartialDelegates")


查看完整回答
反对 回复 2022-10-23
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您需要删除@page指令_PartialDelegates.cshtml以使局部视图正常工作。但问题是_PartialDelegatesModel OnGet永远不会调用方法,因此Avengers不会实例化列表。

似乎不可能将这样的剃须刀页面用作局部视图,只有常规的剃须刀视图适合此目的。如果您需要在呈现页面之前实例化一些值,那么根据文档(“重要”部分)

如果您需要执行代码,请使用视图组件而不是局部视图。


查看完整回答
反对 回复 2022-10-23
  • 3 回答
  • 0 关注
  • 82 浏览

添加回答

举报

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