【发布时间】:2023-01-09 20:49:45
【问题描述】:
我有一个完全在 .NET Core 中构建的 ASP.NET Core MVC web 应用程序:它有许多自定义模型、视图模型、数据验证服务、视图、表单、web api、ajax 调用等。
最近我被要求使一些内容可编辑:总而言之,一些页面几乎是静态的(要编辑/添加/删除的文本和图像),大部分是动态的(模型/视图模型/CRUD 等)但这些页面也是可以更新一些“静态”部分。
我正在尝试和研究一些 CMS,比如 Umbraco(和 Piranha,但这似乎有点受限),我阅读了一些教程,但我仍然没有找到一个像样的解决方案。
我的问题是:
- 首先,是否可以在现有的网络应用程序解决方案上安装 Umbraco?还是我必须先创建一个 Umbraco 项目,然后再导入解决方案的其余部分?
- 现在我知道如何创建页面和插入内容了;但是每次尝试创建自定义视图来呈现自定义视图模型并且具有来自仪表板的可编辑内容(标题,带有解释的段落等)都失败了。我的意思是,我可以访问模型视图属性,但不能访问页面的“静态”部分。
一些示例代码:一个简单的类
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