這是一個相當寬泛的問題,因爲它取決於如果您正在使用ASP DOTNET的框架或DOTNET的ASP核心。這也取決於你是否在做一個真正的SPA(單頁面應用程序),或者你是否也在混合一些RAZR頁面。
我正在爲ASP.NET,Angular和Ag-Grid系列教程工作。我有一個解決方案,用於Visual Studio 2017 ASP DotNet Core基礎網站,用於提供數據的REST控制器,以及用於Windows 7上的Angular 4 SPA的單個index.html。這些步驟對我來說都很合適。這是答案,但這是因爲有很多步驟可以讓ASP DotNet Core,MVC,Angular 4和ag-grid一起合作。
摘要
做一個空的ASP.NET核心的Web應用程序(.NET核心)
修復Startup.cs只投放的wwwroot/index.html的
將簡單的ag網格角度樣本下載到web文件夾中,告訴它 將轉發的輸出複製到wwwroot文件夾中
運行Visual Studio中,它就會打開從C#代碼的瀏覽器提供
詳細步驟
此例子的 角4 SPA頁面,顯示在動作AG-格假設我將製作一個解決方案c:\ code \ Elephant \ ElephantSolution和一個子目錄... \ ElephantSolution \ ElephantWeb和一個web項目。 「Elephant」這個名字是隨機的,實際的目錄位置並不重要,但我保持一致,所以這些步驟更有意義。
的Visual Studio 2017年,項目文件/新建/項目
挑選模板/的Visual C#/。NET內核/ ASP.NET核心Web應用程序(。NET核心)
- 名稱:ElephantWeb
- 位置:C:\代碼\大象
- 解決方案名稱:ElephantSolution
- ASP.NET 1.1的核心模板:空
我可以在Visual Studio中運行它並獲取「Hello World!」如預期。
接下來,我必須插入Angular 4.爲了準備,告訴Visual Studio不要嘗試編譯打字稿(否則它會嘗試編譯所有的角)。編輯ElephantWeb.csproj,在<ProjectGroup>
之內;添加:
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
另外補充下<Project>
<ItemGroup>
<Compile Remove="angular\node_modules\**" />
<Content Remove="angular\node_modules\**" />
<EmbeddedResource Remove="angular\node_modules\**" />
<None Remove="angular\node_modules\**" />
</ItemGroup>
這一部分如果如果您還沒有您尚未安裝的NodeJS
,安裝角
npm install @angular/cli --global
從DOS,進入web項目目錄
mkdir c:\code\Elephant\ElephantSolution\ElephantWeb\angular
cd c:\code\Elephant\ElephantSolution\ElephantWeb\angular
複製AG-電網從https://github.com/ag-grid/ag-grid-angular-seed/tree/master/angular-cli角樣品到... \ ElephantWeb \角
告訴角度編譯到Visual Studio 「wwwroot文件」 文件夾而不是「dist」。這使Visual Studio服務器角網頁。編輯... \ ElephantWeb \ angular.angular-cli.json,改變
"outDir": "dist",
到
"outDir": "..\wwwroot",
從DOS,執行初始編譯強制的角度理清所有依賴和下載。
npm install
做一些Visual Studio中的NuGet更新做好準備在Visual Studio
- 服務的角度,從包管理器控制檯安裝,包裝Microsoft.AspNetCore.StaticFiles -version 1.1.2
- Install-Package Microsoft.AspNetCore.Mvc -version 1.1.3
- Install-Package Microsoft.AspNetCore.Session -version 1.1.2
告訴Visual Studio Web項目將所有非API調用提供給「index.html」。更改啓動。CS啓動類這樣的:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 &&
!Path.HasExtension(context.Request.Path.Value) &&
!context.Request.Path.Value.StartsWith("/api/"))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseMvcWithDefaultRoute();
app.UseStaticFiles();
loggerFactory
.AddConsole();
}
}
編譯的角度,從DOS,並保留作爲編譯發生變化
cd \code\Elephant\ElephantSolution\ElephantWeb\angular
ng build --watch
確保它轉儲角的腳手架的index.html和transpiled * .js文件之中。 .. \ ElephantWeb \ wwwroot
運行Visual Studio,它應該編譯C#代碼,啓動瀏覽器,並顯示ag-grid示例。
讓我知道是否有任何這種格式變得混亂。因爲有太多的文件和步驟,所以這實際上不適用於Plunkr。我試圖在步驟中明確表達,但不會陷入太多細節。讓我知道是否有助於獲得更多信息。
非常感謝您的詳細解答,您是對的,我忘了提及我正在使用的框架。我正在使用常規的.NET Framework,因爲我已經有了這種格式的項目。我正在使用帶有MVC模板的.NET Framework,因此我使用Razer,多個頁面和一個小型數據庫,我試圖使用ag-grid來顯示。因爲它是一個.NET框架,我猜想整個wwwroot的東西不會工作? – Vaethin
此外,我希望不必使用Angular CLI進行編譯 - 我嘗試過,它的工作,有點,但我不能用VS編譯了,不得不使用2個控制檯(一個用於dotnet,一個用於ng服務)和一個代理配置文件,而不是...我現在的方式似乎一切順利,在正確的地方,我唯一的問題是,VS工作室告訴我,ag_grid模塊無法找到,即使main.d.ts文件是definetly它的意思。 – Vaethin
我找到了TypeScriptCompileBlocked選項,錯誤代碼消失了,但它根本不運行應用程序......只是說「加載」 – Vaethin