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

问题描述 投票:2回答:1

到目前为止,我一直在MVC和命令行应用程序中使用razor和c#,但是如果我可以在一个独立的网页中使用,对于小的一次性代码片段等也是非常有用的,就像你'使用经典的ASP或PHP,它只是太庞大,无法制作整个项目并编译应用程序。

我尝试制作一个.cshtml页面并在那里放入一些简单的剃刀代码来循环一些日期,但IIS不会处理它。有没有办法实现我想要的?也许这更像是一个服务器问题,而不是编程问题,如果是这样,我提前道歉。

c# asp.net razor iis-8.5
1个回答
4
投票

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

只需将以下web.config添加到我的站点(Windows 8.1 Pro上的IIS 8)就意味着.cshtml文件的工作方式与传统的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网页,Patrick Hofman在评论中表示正在逐步淘汰;但我很确定我从未安装过Web Matrix,所有这一切都是用记事本完成的; IIS站点文件夹只包含上面的最小web.config,几个测试.cshtml文件和一个测试子文件夹,看看是否会从那里运行.cshtml

我之前为简单的测试/实用程序站点所做的事情类似于上面的UI技术,但程序逻辑的.cs文件放在App_Code文件夹中,因此.NET将在运行时编译它们。

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

1)创建一个/App_Code文件夹

2)使用您的类定义添加完全正常的.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项目中。

© www.soinside.com 2019 - 2024. All rights reserved.