ASP.NET Core 8 中的所有视图组件仅使用一个 ViewComponent 类的缺点

问题描述 投票:0回答:1

我有一个

asp.net core 8
申请。我按照以下文档使用 ViewComponent 类来渲染视图组件:aspnetcore-8 ViewComponents。我创建了一种仅使用一个 ViewComponent 类的方法,这样我就不必每次添加新视图组件时都创建一堆 ViewComponent 类,并且还覆盖默认搜索路径。

ViewComponent代码:

using Microsoft.AspNetCore.Mvc;
namespace UI.ViewComponents
{
    public class AppViewComponent : ViewComponent
    {
        public AppViewComponent()
        {
            
        }

        public IViewComponentResult Invoke(string baseFolder, string componentName, dynamic paramData) 
        { 
            return View($"/Views/{baseFolder}/Components/{componentName}.cshtml", paramData);
        }

    }
}

我使用它的方式就像我的

MainView.cshtml

 @await Component.InvokeAsync("App",
          new
          {
              baseFolder = "Provider",
              componentName = "Edit",
              paramData = (Provider: Model.provider, TestData: Model.testData)
          })



 @await Component.InvokeAsync("App",
          new
          {
              baseFolder = "Account",
              componentName = "Edit",
              paramData = (Account: Model.account)
          })

在我的组件页面中,我有这样的东西,它可以完美地工作:

@model (Provider provider, string[] testData)

<input type="text" asp-for="@Model.provider.Code" class="form-control border-end-0" id="code">

这样做有什么坏处吗?我在互联网上搜索,似乎找不到有人记录这样的事情。

c# asp.net-core-mvc asp.net-core-8
1个回答
0
投票

您的 ViewComponent 示例中的情况没有业务逻辑,我想您可以改用部分视图。如果你想这样做,所有视图组件只有一个 ViewComponent 类,你可能会遇到对所有组件使用一种逻辑的情况。

您可以查看这些以了解更多信息,希望这些可以帮助您: ASP.NET Core 中的部分视图这个答案

© www.soinside.com 2019 - 2024. All rights reserved.