Razor中的类调用方法

时间:2013-02-25 04:08:22

标签: asp.net-mvc razor

我在MVC 4项目的App_Code目录中的类中有一个方法。我可以从控制器中调用它,但我无法弄清楚如何从View(.cshtml)文件中调用它。

namespace LST.App_Code
{
    public static class Utilities
    {
        public static readonly log4net.ILog log = log4net.LogManager.GetLogger("GeneralLog");

从我的观点来看,我尝试了几件事,一直都是这样:

@LST.App_Code.Utilities.log.Info("asdf");

当我这样做时,在尝试加载页面时收到以下编译错误:

  

描述:编译资源期间发生错误   需要为此请求提供服务。请查看以下具体内容   错误详细信息并适当修改源代码。

     

编译器错误消息:CS0433:类型'LST.App_Code.Utilities'   存在于两者中   'c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET   文件\根\ bd7cb704 \ 59585235 \组件\ DL3 \ 3b0ad3ff \ ec2b5faa_0b13ce01 \ mvcroot.DLL”   和'c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET   文件\根\ bd7cb704 \ 59585235 \ App_Code.cggwncvj.dll'

     

来源错误:

     

第7行:@using(Html.BeginForm())第8行:{第9行:
  @(LST.App_Code.Utilities.log.Info(“asdf”))第10行:第11行:
  @ Html.AntiForgeryToken()

我已尝试过有关清理项目,asp.net临时文件目录以及设置批处理编译选项的建议。没有什么工作。

我不熟悉Razor语法的复杂性。有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

我完全没有.cs文件中的命名空间。

如果您已经创建了app_code文件夹,那么您可以像这样创建类文件(没有名称空间):

using System:
...

public class FooClass{
  public string Foo(...)
  {
      ...
  }
}

从您的观点中调用它:

@{
   new FooClass().Foo(...);

}

为我工作......