在没有控制器的情况下将数据传递到布局剃刀页面

时间:2018-12-23 07:44:08

标签: c# razor asp.net-core .net-core razor-pages

我想在我的布局页面中可视化来自模型的数据-特别是当用户向购物车中添加商品时,我要计算购物车中的商品数量并将其显示在图片旁边的导航栏中购物车。

用户可以从1页以上的页面中添加产品(例如,从“索引”页面或“产品/索引”页面等)。

有人处理过类似的事情吗?

我希望导航栏看起来像这样:

    导航栏                   

<div class="navbar-collapse collapse show" id="navbarColor01" style="">
    <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
            <a asp-page="/Index" class="nav-link" >Home <span class="sr-only">(current)</span></a>
        </li>
        <li>
            <a asp-page="/ShoppingCart/Index"> <i class="fas fa-shopping-cart fa-1x fa-cog "></i></a>
<div class="badge badge-danger badge-pill">5</div> //here is the number to be displayed
        </li>
    </ul>
</div>

1 个答案:

答案 0 :(得分:2)

有多种方法可以实现这一目标,评估您的选择,然后决定要做什么。

您可以通过以下方式实现此目标:

  1. 使用查看包。这将在整个项目中引起代码声誉。因为您要为每次访问的页面设置查看包。
  2. 使用局部视图。通过调用该动作的Ajax请求,然后返回局部视图。部分视图通常旨在成为控制器/页面的一部分,而让GetCart来自不同的控制器/页面则没有意义。另外,这也是避免观看声誉的最佳方法。
  3. 查看组件。这通常是理想的方法,因为您需要在后台进行工作,然后返回值。 View组件可以独立存在,这对SoC很有好处。

我的个人推荐为View Component,这是asp.net核心的一项新功能(取代ChildAction)。