在独立页面中使用 c# 和 razor

Using c# and razor in standalone pages

到目前为止,我一直在 MVC 和命令行应用程序中使用 razor 和 c#,但如果我可以在独立网页中使用它也将非常有用,用于小型一次性代码片段等,在与您使用经典 ASP 或 PHP 的方式相同,因为它太笨重而无法构建整个项目并编译应用程序。

我尝试只制作一个 .cshtml 页面并在其中放入一些简单的剃刀代码以循环访问一些日期,但 IIS 不会处理它。有没有办法实现我正在寻找的东西?也许这是一个服务器问题而不是编程问题,如果是这样我提前道歉。

是的,除非我遗漏了什么?

只需将以下 web.config 添加到我的站点(Windows 8.1 Pro 上的 IIS 8)意味着 .cshtml 文件的工作方式与 classic ASP / PHP;即 URL 对他们来说是文件系统路径,Razor 代码 运行 很好。

<configuration>
 <appSettings>
    <add key="webPages:Version" value="2.0"/>
    <add key="webpages:Enabled" value="true" />
  </appSettings>

  <system.web>
        <customErrors mode="Off"/><!-- I assume that for little test pages you want easy error reporting! -->
  </system.web>
</configuration>

我不好意思承认我不知道它为什么有效。配置键表明它正在使用 ASP.NET 网页,帕特里克霍夫曼在评论中说它正在被淘汰;但我很确定我从来没有安装过Web Matrix,所有这些都是用记事本完成的; IIS 站点文件夹仅包含上述最小 web.config、几个测试 .cshtml 文件和一个测试子文件夹,以查看 .cshtml 是否会从那里 运行。

我之前对简单的 test/utility 网站所做的类似于上述 UI 的技术,但是 .cs 程序逻辑文件放在 App_Code 文件夹,以便 .NET 即时编译它们。

后者的例子,对于之前没有玩过 /App_Code 的人来说:

1) 创建一个 /App_Code 文件夹

2) 使用您的 class 定义添加完全正常的 .cs 文件:

using System;

namespace Minimal
{
    public class Boo
    {
        public static String Get()
        {
            return "BOO!";
        }
    }
}

3) 它被神奇地编译并像任何普通程序集中的代码一样可用。

4) 因此您可以创建如下视图:

<html>
    <head></head>
    <body>
        <h1>@Minimal.Boo.Get()</h1>
    </body>
</html>

非常方便;使快速构建的工具和测试变得清晰且易于开发,并且如果它们变得足够成熟,也很容易添加到普通的 VS 项目中。