【问题标题】:Creating Line-of-Business app with ASP.NET Core & Razor Pages使用 ASP.NET Core 和 Razor 页面创建业务线应用程序
【发布时间】:2018-07-18 07:03:54
【问题描述】:

我想在 ASP.NET Core 和(最好是)Razor Pages 中创建一个业务线应用程序,但没有设法找到一个指南(或一个入门项目),它为如何处理复杂的 CRUD 功能提供了明确的指令.

给定以下 EF 模型:

public class Patient
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string IDNumber { get; set; }
    public DateTime DateOfBirth { get; set; }

    public virtual ICollection<PatientCard> PatientCardsCollection { get; set; }
}

public class PatientCard
{
    public int Id { get; set; }
    public int CardNumber { get; set; }
    public Patient Patient { get; set; }
}

我特别没有设法找到的是如何为具有 PatientCard 集合的 Patient 创建 ListView/DetailView,该集合应显示在Patient 的 DetailView 并允许创建/编辑/链接 PatientCard-s 到 Patient,如下所示:Sample DetailView & nested ListView - 在屏幕中患者业务对象具有 PatientCard 业务对象的集合。

当然,这可能需要使用一些商业组件,例如 DevExtreme、Kendo、Syncfusion 等,我们已经准备好使用其中的任何一个。

我们在过去成功地使用了 DevExpress XAF 框架来实现这个目的,它创建了基于 ASP.NET 表单的有状态应用程序,因此无法很好地扩展。以下是您可以在几个小时内创建的演示:https://demos.devexpress.com/XAF/MainDemo

我们还研究了其他框架,例如 ASP.NET Zero (https://aspnetzero.com),看起来很有希望,但我们真正想要的是从头开始创建此功能。

【问题讨论】:

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


    【解决方案1】:

    我将拆分应用程序逻辑并创建一个 .NET Core MVC 应用程序和第二个项目作为 .NET Core Web API (2)。

    所以所有的数据库操作都可以使用 Web Api 完成,您可以简单地在 MVC 应用程序中调用 API。

    我建议您使用 Angular,它以 .NET Core MVC 项目为基准。通过这种方式,您的业务应用程序可以提供良好的用户体验,因为它是一个 SPA。

    您可以让您的后端工程师专注于一个单独的项目 => Web api 和一个团队负责前端/与后端的通信。

    如果有任何问题,请联系我!

    【讨论】:

    • 如果我错了,请纠正我,因为 Angular 和 Razor 之间的区别在于“Razor 在服务器上呈现 HTML。Angular 在客户端上呈现它”但这并不能回答我的问题如何设计视图以实现复杂的 LoB CRUD 功能
    • 你用前端做什么由你自己选择,专注于 Razor 或主要使用 Angular。您可以为后端做的就是在与 MVC 应用程序相同的解决方案中实现 API。如果您使用服务器端页面,您实际上并不需要 Web Api。因此,为了实现复杂的后端,我将研究实体框架和 UnitOfWork-Repository 模式。我是这种组合的大力倡导者。
    • 在这一点上我更喜欢 Razor 而不是 Angular,因为我的 C# 合格团队更容易采用而不是必须学习 Angular 和 TypeScript/JavaScript。
    • 如果您已经使用 Angular 或 Razor 创建了 LoB 解决方案,您能否提供有关如何使用上述模型创建复杂前端的示例?
    【解决方案2】:

    简单的解决方案是单独列出 Patient 和 PatientCard 之间的关系及其自己的详细信息。

    否则,您仍然可以在患者详细信息中实现自己的逻辑来添加、删除、编辑患者卡片。例如,有一个带有加号和减号按钮的列表,以及每行卡号的字段。您可以使用该行的视图组件来实现此目的。因此,您添加的每张卡片都是 视图组件 的另一个“实例”。就像在这个 TodoList 示例中一样:

    看看这里:View Components Doc

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2019-03-09
      • 2020-08-16
      • 1970-01-01
      • 2020-08-14
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      相关资源
      最近更新 更多