【问题标题】:How to implement an ASP.NET Core controller supporting Razor and Angular?如何实现支持 Razor 和 Angular 的 ASP.NET Core 控制器?
【发布时间】:2020-02-13 15:53:10
【问题描述】:

目前,我正在用 C# ASP.NET Core 和 Razor Pages 编写一个 Web 应用程序。

将来我想用 Angular 应用程序替换我的前端。现在我想知道如何设置我的控制器来服务这两种技术。

问题是,我的控制器方法必须返回一个 ViewResult 对象才能在使用 Razor Pages 时正确呈现视图。结果显然不能在 Angular 中使用,并且控制器方法并不是我想要的真正 RESTful。

那么有没有办法实现支持 Razor 和 Angular 的控制器?

提前致谢

【问题讨论】:

  • 尝试将控制器方法中的逻辑移到其他地方。您可以使用MediatR 来实现 CQS 或 CQSR 模式。或者在控制器中编写特殊服务并调用命令/查询(服务方法)

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

如果你走的是角度的方式,不是真的。 Angular 期望使用 Xhr 请求进行通信。

net core 中甚至还有一个用于 Angular 应用程序的模板:https://docs.microsoft.com/en-us/aspnet/core/client-side/spa/angular?view=aspnetcore-3.1&tabs=visual-studio

理论上你可以通过一些重复来实现你想要的。

即:

[HttpGet]
public ActionResult Index()
{
     IndexViewModel viewModel = GetIndexModel();
     // Add action logic here
     return View(viewModel);
}

[HttpGet]
public IndexViewModel GetIndexModel() {
   // return the view model.
}

第二个 get 函数可以用作 Angular 应用程序的 xhr 请求。这不是真的推荐。使用 Angular 是将您的 api 转换为 Rest 并正确处理 spa 中的数据的好机会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2021-06-18
    • 2011-05-19
    • 2019-03-09
    • 2018-02-24
    相关资源
    最近更新 更多