所以我想知道是否可以使用 Surface 控制器来进行所有 CRUD 操作(Umbraco V10)。我知道我可以创建一个 Post 方法,但是是否可以添加一个 Delete 或 Patch 方法?
我尝试添加这样的方法:
public class DeleteController : SurfaceController {
[HttpDelete]
public IActionResult Delete()
{
...
}
}
但我只收到 405 错误,告诉我该方法不被允许。如果我将
[HttpDelet]
更改为 [HttpPost]
该方法有效,但我认为如果我删除 POST 方法中的内容,这在语义上是不正确的。
我是否正确地说,在一个 Surface 控制器中拥有多种方法并不常见?所以我必须为每个方法创建一个控制器。
您应该能够使用 Surface 控制器进行不同的 CRUD 操作。以下是来自Umbraco CMS 文档的示例代码。
请查看本指南以了解更多详细信息。
namespace RoutingDocs.Controllers;
public class MyController : SurfaceController
{
public MyController(
IUmbracoContextAccessor umbracoContextAccessor,
IUmbracoDatabaseFactory databaseFactory,
ServiceContext services,
AppCaches appCaches,
IProfilingLogger profilingLogger,
IPublishedUrlProvider publishedUrlProvider)
: base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger, publishedUrlProvider)
{
}
[HttpPost]
[ValidateUmbracoFormRouteString]
public IActionResult HandleSubmitMethod1()
{
return RedirectToCurrentUmbracoPage();
}
[HttpPost]
[ValidateUmbracoFormRouteString]
public IActionResult HandleSubmitMethod2()
{
return Content("Hello Postback");
}
}