【问题标题】:How to call an action of controller in ASP.NET Core angular web application如何在 ASP.NET Core Angular Web 应用程序中调用控制器的操作
【发布时间】:2019-11-10 12:55:42
【问题描述】:

我创建了一个 ASP.NET Core Angular 项目。有一个默认的angular组件和一个mvc的HomeController。当我直接运行应用程序时,它工作正常。网页显示角度组件的输出。然后我看HomeController的源码,如下图:

class HomeController
{
    // ... some code here
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };
    }
    // ... some code here
}

到目前为止,我想做的是使用 URL 来调用 Get 方法,而不是使用 ajax 来调用动作。我只是把 URL 放到浏览器的地址栏上。我使用的网址是:/Home/Get。但它不起作用,页面仍然显示角度组件的输出。

那么如何解决这个问题呢?

【问题讨论】:

  • 如果浏览器响应 Angular 应用程序,您可能使用了错误的域。 Angular 服务器在开发中运行在 http:localhost:4200 (使用 4200 端口)。您的 ASP.Net 应用程序正在另一个应用程序中运行。

标签: c# node.js angular asp.net-core single-page-application


【解决方案1】:

如果你想访问你的控制器,你应该把它变成这样的 API 路径

[Route("api/[controller]/[action]")]
class HomeController: Controller
{
    // ... some code here
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };
    }
    // ... some code here
}

【讨论】:

  • 谢谢,它有效。但我不明白为什么它可以工作。我先创建一个 asp.net 核心项目,所以 url /home/get 可以工作。然后我将角度附加到这个项目。开发了一些组件来学习一些有角度的东西。在那之后 url home/get 不起作用。你喜欢我为什么?谢谢
  • @Frank 如果可行,请投票并将我的答案标记为已接受。因为如果您使用的是 Visual Studio 2019,则可以选择创建 api 模板或 Angular 模板。 Angular 模板默认 dong 有 api 控制器,所以你只需要添加一个
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2019-09-16
相关资源
最近更新 更多