我在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语法的复杂性。有人可以指出我正确的方向吗?
答案 0 :(得分:3)
我完全没有.cs文件中的命名空间。
如果您已经创建了app_code文件夹,那么您可以像这样创建类文件(没有名称空间):
using System:
...
public class FooClass{
public string Foo(...)
{
...
}
}
从您的观点中调用它:
@{
new FooClass().Foo(...);
}
为我工作......