首先,感谢您抽出宝贵的时间。
我的问题是我想获取一个.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)
答案 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
,它将把您的所有js
和css
移动到映射到angular.json
文件的构建文件夹中-因此请确保文件路径并读取index.html
文件
我在outputPath
中的angular.json
读为:
"outputPath": "./wwwroot"
-这不是运行应用程序的传统方法,它既需要角度构建又需要MVC构建来呈现页面,但是您可以将其用作解决方法
如果在 .net core 2.0 ^ 中创建角度项目,还有另一种方法可以实现此目的,您将获得Angular模板,您可以在其中创建应用程序-如果这样做,它将直接呈现您的应用程序在 .net核心
中使用spa
进行角度应用
以我的观点,不要将剃须刀cshtml
与您的角度模板混在一起,这不是一个好主意-单独创建您的角度应用并使用您的 API 来获取数据>
希望这对您有帮助-祝您编码愉快!!