【问题标题】:.NET Core web, Umbraco 10, custom controllers and views.NET Core web、Umbraco 10、自定义控制器和视图
【发布时间】:2023-01-09 20:49:45
【问题描述】:

我有一个完全在 .NET Core 中构建的 ASP.NET Core MVC web 应用程序:它有许多自定义模型、视图模型、数据验证服务、视图、表单、web api、ajax 调用等。

最近我被要求使一些内容可编辑:总而言之,一些页面几乎是静态的(要编辑/添加/删除的文本和图像),大部分是动态的(模型/视图模型/CRUD 等)但这些页面也是可以更新一些“静态”部分。

我正在尝试和研究一些 CMS,比如 Umbraco(和 Piranha,但这似乎有点受限),我阅读了一些教程,但我仍然没有找到一个像样的解决方案。

我的问题是:

  1. 首先,是否可以在现有的网络应用程序解决方案上安装 Umbraco?还是我必须先创建一个 Umbraco 项目,然后再导入解决方案的其余部分?
  2. 现在我知道如何创建页面和插入内容了;但是每次尝试创建自定义视图来呈现自定义视图模型并且具有来自仪表板的可编辑内容(标题,带有解释的段落等)都失败了。我的意思是,我可以访问模型视图属性,但不能访问页面的“静态”部分。

    一些示例代码:一个简单的类

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; } = "";
    }
    

    控制器:

    public class PersonController : SurfaceController
    {
        public PersonController(
            IUmbracoContextAccessor umbracoContextAccessor,
            IUmbracoDatabaseFactory databaseFactory,
            ServiceContext services,
            AppCaches appCaches,
            IProfilingLogger profilingLogger,
            IPublishedUrlProvider publishedUrlProvider)
            : base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger, publishedUrlProvider)
        {
        }
    
        [Route("/person")]
        public IActionResult Index()
        {
            Person person = new Person { Id = 1, Name = "Pippo" }; 
            return View(person);
        }
    
        [Route("/person/about")]
        public IActionResult About()
        {
            Person person = new Person { Id = 2, Name = "Pluto" };
            return View(person);
        }
    }
    

    在 Umbraco 中创建的视图

    @using UmbraTest.Models
    @model Person
    @{
        Layout = "/Views/Master.cshtml";
    }
    
    <h1>Hi, your Id is @Model.Id</h1>
    <p>@Model.Name</p>
    

    但我想直接从 CMS 插入其他 html 内容。

    这更像是一个建议请求:如前所述,我有几十个控制器/视图。我已经阅读了 Umbraco 中的 SurfaceControllers、MvcRendererController。这意味着我应该编辑我所有的几十个控制器,假设我可以解决第 1) 点和第 2) 点。它真的值得吗?也许拒绝请求并回答“别担心,每当您需要编辑某些内容时,我都会为您做”会更好也更容易。

    提前致谢

【问题讨论】:

    标签: view controller asp.net-core-mvc umbraco


    【解决方案1】:

    如果你有一个现有的网络应用程序并且需要一些 CMS'able 内容,我会看一个无头 CMS。 Umbraco 确实提供了一个名为“Heartcore”的版本。有关更多详细信息,请查看此处:

    https://umbraco.com/products/umbraco-heartcore/what-is-umbraco-heartcore/

    基本上,无头 CMS 是一种没有前端渲染的内容管理系统。因此,在您的情况下,您可以将所有 CMS 内容添加到此应用程序,并通过 API 调用从您现有的网络应用程序中获取此数据。

    我认为这种方法是在不拆散现有 Web 应用程序的情况下实现所需内容的更简单方法。

    希望有所帮助。

    【讨论】:

    • 你好 Ben D,谢谢你的回复和建议。我忘了在我的帖子中说我已经看过 Umbraco Heartcore,但我(或者更好的是,我的公司)无法为所需的用户数量(至少 3)支付许可。然而,无头 CMS 解决方案很有趣。只需要寻找更便宜的解决方案再次感谢您
    • @bitdiego 那里有很多开源无头 CMS 平台。希望你能找到一个有效的。我只用过 Umbraco,所以不能真正推荐一个。祝你好运
    • 谢谢,也许我确实找到了它:Squidex,我刚刚开始使用它,看起来很有趣。简单...再次感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2021-05-24
    • 2016-09-27
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多