1

我的 MVC 4 项目的 App_Code 目录中的类中有一个方法。我可以从控制器中调用它,但我不知道如何从视图(.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 Files\root\bd7cb704\59585235\assembly\dl3\ 3b0ad3ff\ec2b5faa_0b13ce01\mvcroot.DLL' 和 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\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 语法的复杂性不太熟悉。有人可以指出我正确的方向吗?

4

1 回答 1

3

我让它在 .cs 文件中完全没有命名空间的情况下工作。

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

using System:
...

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

并从您的角度这样称呼它:

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

}

为我工作...

于 2013-03-11T12:28:44.813 回答