Angular templateUrl:MVC控制器功能

时间:2018-11-09 08:09:44

标签: c# asp.net-mvc angular visual-studio

首先,感谢您抽出宝贵的时间。

我的问题是我想获取一个.cshtml(从MVC控制器返回)作为我的角度站点的模板。

首先,我创建了一个ASP.Net Core 2.1 Web应用程序模板:Angular。其次,我在“ Controller”文件夹中添加了一个Home Controller。

using Microsoft.AspNetCore.Mvc;

// For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        // GET: /<controller>/
        public IActionResult Index()
        {
            return View();
        }
    }
}

下一步是在“ Pages”文件夹中创建一个名为“ Home”的文件夹。在主文件夹中,我创建了一个剃刀视图,名为“ index.cshtml”,其中仅填充了一个

<h1>This is the Index View</h1>

现在我将app.component.ts中的templateUrl更改为

templateUrl: '/home/index',

我在stackoverflow的帖子中看到了所有这些内容。我丢失了链接,但这是发布该信息的人的github:https://github.com/ranjanmadhu/Angular2-101

现在,我打开cmd,cd到项目的路径,然后尝试通过ng build进行构建。

问题来了,它引发了我这个错误:

ERROR in ./src/app/app.component.ts
Module not found: Error: Can't resolve './/home/index' in 'C:\Users\Myridor\AngularMvcTest\AngularMvcTest\ClientApp\src\app'

我希望有人能帮助我解决问题。

最好的问候, 尼科又名迈里德(Myridor)

2 个答案:

答案 0 :(得分:0)

我从未想到过这样的方法(通过templateUrl混合Razor和Angular)。我不确定这是否是个好主意。如果您坚持的话,我认为这篇文章可能会对您有所帮助:Stating directive templateUrl relative to root

祝你好运!

答案 1 :(得分:0)

我似乎也不太可能-即使棱角分明也不鼓励这种方法-但是我对这个问题有个想法

直接将角度生成的index.html映射到您的控制器,该控制器将调用您的index.html,您可以只使用角度分量

我希望这会有所帮助-请检查下面的示例

    public IActionResult Index()
    {
      return PhysicalFile(Path.Combine(Directory.GetCurrentDirectory(),
        "wwwroot", "index.html"), "text/HTML");
    }  

您的操作方法应如下所示-直接读取index.html并将其作为PhysicalFile()从您的控制器中返回

最后,在构建Angular应用程序时,我们从何处获得此index.html,它将把您的所有jscss移动到映射到angular.json文件的构建文件夹中-因此请确保文件路径并读取index.html文件

我在outputPath中的angular.json读为:

"outputPath": "./wwwroot"-这不是运行应用程序的传统方法,它既需要角度构建又需要MVC构建来呈现页面,但是您可以将其用作解决方法

如果在 .net core 2.0 ^ 中创建角度项目,还有另一种方法可以实现此目的,您将获得Angular模板,您可以在其中创建应用程序-如果这样做,它将直接呈现您的应用程序在 .net核心

中使用spa进行角度应用

以我的观点,不要将剃须刀cshtml与您的角度模板混在一起,这不是一个好主意-单独创建您的角度应用并使用您的 API 来获取数据

希望这对您有帮助-祝您编码愉快!!