问题 我们可以在现有的ASP.NET 4网站上使用Razor吗?


是否可以在现有的ASP.NET 4网站上使用Razor?


8465
2017-07-15 08:42


起源



答案:


如果您已经安装了VS2010和MVC 3(包括用于构建ASP.NET Razor网站的Visual Studio工具),则甚至不需要在Web Matrix中打开该站点。安装MVC 3使得开发Razor页面所需的库可用,甚至可用于现有的Web应用程序。

看到:

http://www.asp.net/webmatrix/tutorials/program-asp-net-web-pages-in-visual-studio

您不需要创建新的Web页面站点(根据说明)。您可以打开一个现有的网站,右键单击该网站的根文件夹,单击添加项目,您应该看到“网页(Razor)”作为选项。

Inellisense和调试在Razor页面中工作,就像Web窗体页面一样

如上所述,请记住ASP.Net网页(Razor)和ASP.Net WebForms是真正不同的平台,并且每个平台的可重用组件不能(或至少不应该)使用


2
2018-03-23 21:19



我知道这是一个死灵,但是如果你有一个当前的链接(现有的死了),我认为这是值得碰撞的。 - Jon Story


答案:


如果您已经安装了VS2010和MVC 3(包括用于构建ASP.NET Razor网站的Visual Studio工具),则甚至不需要在Web Matrix中打开该站点。安装MVC 3使得开发Razor页面所需的库可用,甚至可用于现有的Web应用程序。

看到:

http://www.asp.net/webmatrix/tutorials/program-asp-net-web-pages-in-visual-studio

您不需要创建新的Web页面站点(根据说明)。您可以打开一个现有的网站,右键单击该网站的根文件夹,单击添加项目,您应该看到“网页(Razor)”作为选项。

Inellisense和调试在Razor页面中工作,就像Web窗体页面一样

如上所述,请记住ASP.Net网页(Razor)和ASP.Net WebForms是真正不同的平台,并且每个平台的可重用组件不能(或至少不应该)使用


2
2018-03-23 21:19



我知道这是一个死灵,但是如果你有一个当前的链接(现有的死了),我认为这是值得碰撞的。 - Jon Story


是的,您可以将Razor与现有的ASP.NET WebSite一起使用。只需使用WebMatrix工具打开您的网站,然后开始添加CSHTML文件。 需要注意的是,如果您的网站使用WebForms控件,WebMatrix工具将不会在现有的aspx页面中提供任何帮助。此外,Razor不支持WebForms,因此您将无法添加类似的内容 <asp:GridView> 到CSHTML文件。


9
2017-07-15 18:10





如果你想在WebMatrix中打开现有的ASP.NET网站并在工具中处理它,那么marcind是正确的。另一方面(或者除此之外),如果您想在站点中使用Razor语法并保留在VisualStudio中,请查看以下文章: http://weblogs.asp.net/rashid/archive/2010/07/10/use-razor-as-asp-net-mvc-viewengine.aspx

您需要做四件事:

  1. 将引用添加到随WebMatrix一起安装的Razor程序集。这些可以在C:\ Program Files \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies中找到

  2. 创建一个自定义ViewEngine类,一个继承自IView的View类(不是很难,请查看上面文章中的源代码)

  3. 添加新的ViewEngine Global.asax  Application_Start() 

    ViewEngines.Engines.Add(new RazorViewEngine(("cs"));
    
  4. 使用a创建视图页面 .cshtml 扩展,而不是 .aspx

这里有几个步骤,但这是快速的工作,上面文章的来源将为您提供很长的路要走。


1
2017-07-16 13:35



该博客文章中的viewengine实际上没有工作,所以请不要使用它。此外,它只适用于ASP.NET MVC proejcts。 - marcind
@marcind你有什么具体问题吗?我在建议它之前尝试了它并且没有任何问题,但是知道你遇到了什么问题会很好,所以我可以避免将来指向它们。至于你是第二点,真的够了。我想我从问题中得到了太多假设,你的答案是正确的。 - Brandon Satrom
像 using (Html.BeginForm()) 不起作用和其他与渲染部分视图有关的事情。 - marcind