【问题标题】:How to reuse HTML snippets in asp.net core razor page?如何在 asp.net core razor 页面中重用 HTML 片段?
【发布时间】:2019-03-19 10:21:58
【问题描述】:

我尝试在我的 razor 页面(视图组件)中重用 HTML sn-ps,但不知何故它从未调用或点击 html 部分中的中断。

我使用的是 Asp.net core 2.2

        @{
        Func<CategorySimpleModel, Microsoft.AspNetCore.Html.IHtmlContent> DisplayManufacturerPicture=
            @<div class="col-sm-4">
                <div class="row">
                    @foreach (var m in item.Manufacturers)
                    {
                        <div class="col-md-6 col-sm-12">
                            blah blah
                        </div>
                    }
                </div>
            </div>;
        }

   @foreach (var root in Model.Categories)
            { 
               DisplayManufacturerPicture (root);
            }

【问题讨论】:

  • 您可能想查看Razor components
  • 那是 .net core 3.0 预览版,我只使用 2.2。
  • "但不知何故,它从不调用或击中 html 部分的中断" 你到底是什么意思?您是否在 Func 中放置了一个断点并且它没有被命中?
  • 是的,它永远不会成功,我什至尝试过使用简单的字符串 func。奇怪的是,尽管 for 循环确实命中了 DisplayManufacturerPicture,但它从不显示任何内容

标签: c# asp.net-core razor


【解决方案1】:

尽管方法调用在服务器端语法中,但它只能与 @ 一起使用

 @if (root.Manufacturers.Count > 0)
{
   @DisplayManufacturerPicture(root);
}

【讨论】:

    【解决方案2】:

    您尝试做的事情(还)不可能。你应该看看partial views

    @foreach (var root in Model.Categories)
    {
        <partial name="_DisplayManufacturerPicture" model="root" />
    }
    

    然后在_DisplayManufacturerPicture.cshtml

    @model CategorySimpleModel
    
    <div class="col-sm-4">
        <div class="row">
            @foreach (var m in item.Manufacturers)
            {
                <div class="col-md-6 col-sm-12">
                    blah blah
                </div>
            }
        </div>
    </div>
    

    【讨论】:

    猜你喜欢
    • 2021-07-06
    • 2018-10-21
    • 2019-12-15
    • 2018-11-24
    • 1970-01-01
    • 2020-08-22
    • 2020-08-14
    • 2022-01-19
    相关资源
    最近更新 更多