Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
角度2和C#/.NET_C#_Asp.net_Asp.net Mvc_Angular - Fatal编程技术网

角度2和C#/.NET

角度2和C#/.NET,c#,asp.net,asp.net-mvc,angular,C#,Asp.net,Asp.net Mvc,Angular,我知道你可以在Angular 2中使用C#和.NET,但我只在布局中看到过。您能在组件文件中包含C#吗?例如,Angular 2网站上的英雄之旅教程中有一个dashboard.component.html文件。你能把它改成dashboard.component.cshtml并加入C#/Razor吗?我90%确信,如果没有黑客的帮助,你是做不到这一点的。尽管它们看起来像一个标准的HTML文件,但为了方便起见,它们是分开的。它们通常在构建时流式传输到JS代码中 也就是说,我的10%答案是,您可能可以

我知道你可以在Angular 2中使用C#和.NET,但我只在布局中看到过。您能在组件文件中包含C#吗?例如,Angular 2网站上的英雄之旅教程中有一个dashboard.component.html文件。你能把它改成dashboard.component.cshtml并加入C#/Razor吗?

我90%确信,如果没有黑客的帮助,你是做不到这一点的。尽管它们看起来像一个标准的HTML文件,但为了方便起见,它们是分开的。它们通常在构建时流式传输到JS代码中


也就是说,我的10%答案是,您可能可以做一些事情,将服务器调用封装在JS nugget中,这样您就可以保留实际的CHTML服务器端。您应该能够烘焙这样调用的脚本部分:

您能给出您为什么要这样做的场景吗

Angular 2(Javascript/Typescript)是客户端(尽管它仍然使用transpiler将TS转换为JS)

而cshtml文件是通过ASP.NET编译器编译的,因为它们是ASP.NET结构中声明性资源的一部分

Razor语法需要一个引擎来理解这些符号意味着什么,编译器会保存对这些符号的引用,以便在解释这些符号时生成正确的代码。然而,它们是由ASP.NET运行时动态编译的

请参见此处的更多信息:


您可以创建Asp.Net MVC应用程序,然后添加Angular库,并将应用程序设置为使用默认布局和默认控制器索引操作

然后,您可以创建部分动作,并将其URL用作角度路由的模板,例如:

templateUrl:'YourController/YourPartialAction'

虽然这会起作用,但我不认为这是推荐的,因为你混合了MVC和Angular,Angular应该完全是客户端的,并与后端分离,你能在(Angular 2)中加入C吗组件文件?答案是否定的,你为什么要这么做?我一直在使用Angular2和Asp.net MVC。但从概念上讲,理解以下几点很重要:

让asp.net处理后端,让Angular2处理前端

否则,不要将两者混用(除非你是Angular Universal,其中你的ng2应用程序是在服务器上预渲染的,但这是一个特殊的主题)

我将这些问题完全分开,因此在开发时,我在Visual Studio代码的上下文中使用angular cli,即Angular2开发环境中没有一个字节的.net

当然,现在您的ng2应用程序可能想要调用“服务器”,即进行http调用等,如下所示:

getMesoServerData(someVar:string):承诺{
let headers=新的headers();
headers.append(“内容类型”、“应用程序/json”);
让url=this.apiUrl+“GetMesoServerData”;
让post=this.http.post(url,JSON.stringify(someVar){
标题:标题
}).map(response=>response.json());
返回后。toPromise();

}
您只需关闭启动文件中的过滤器即可。我有一个现有的.NET应用程序,正在尝试找出将前端转换为使用Angular 2的最佳方法。我开始认为,最好不要在这些组件文件中使用C,而是创建一个返回所需HTML的服务m我现有的C#控制器。这更有意义吗?我理解,如果你的视图中有纯html,并且视图没有与控制器耦合,那么你可以切换,因为依赖项是松散耦合的或单独的。如果你真的需要使用angular 2或任何其他前端框架,那么你的控制器将成为客户端使用的API。