C# &引用;ASP.global“asax在命名空间ASP中不存在”;

C# &引用;ASP.global“asax在命名空间ASP中不存在”;,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我在App_代码上创建了一个RazorFunctions.cshtml文件 @functions { public static string GetActiveClassIf(string controllerName, string actionName = null) { var routeData = @HttpContext.Current.Request.RequestContext.RouteData; string currentC

我在App_代码上创建了一个RazorFunctions.cshtml文件

@functions {
    public static string GetActiveClassIf(string controllerName, string actionName = null)
    {
        var routeData = @HttpContext.Current.Request.RequestContext.RouteData;
        string currentController = routeData.Values["controller"].ToString();
        string currentAction = routeData.Values["action"].ToString();
        return controllerName == currentController &&
            (String.IsNullOrEmpty(actionName) || currentAction == actionName) ? "active" : "";
    }
}
当我编译时,它会给我两个错误(编译成功,站点工作没有问题),但是这些错误很烦人

RazorFunctions.cshtml作为内容(尝试编译,但当然不能使用cshtml文件)

Global.asax.cs是:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        ModelMetadataConfig.RegisterModelMetadata();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
        //Database.SetInitializer(new DropCreateDatabaseAlways<ApplicationDbContext>());
    }
}
公共类MVCAPApplication:System.Web.HttpApplication
{
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
ModelMetadataConfig.RegisterModelMetadata();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
SetInitializer(新的MigrateDatabaseToLatestVersion());
//SetInitializer(新的DropCreateDatabaseAlways());
}
}


这是我第一次使用应用程序代码,所以我不知道还能做什么,所有搜索返回的ASP.NET 1-2结果都已过期,razor甚至不存在,所以我不确定如何解决这个问题


我使用的是Visual Studio 2015(以防万一)

放置在App_Code文件夹中的代码处理方式有点不同,它是在运行时编译的。cshtml文件是“内容”,所以这可能是出现错误的原因。在您的项目名称it代码或类似内容(但不是应用程序代码)中创建普通文件夹,并将您的文件放在那里。

我也有同样的问题

我手动编辑生成的文件
file.cshtml.72cecc2a.cs
(位于
AppData\Local\Temp\Temporary ASP.NET Files\root
),并将
ASP.global\u asax
更改为
System.Web.HttpApplication
,错误消失了

这是生成的代码:

protected static ASP.global_asax ApplicationInstance {
    get {
        return ((ASP.global_asax)(Context.ApplicationInstance));
    }
}
我把它改成:

protected static System.Web.HttpApplication ApplicationInstance {
    get {
        return ((System.Web.HttpApplication)(Context.ApplicationInstance));
    }
}

我不知道为什么会发生这种情况。

经过进一步调查,我发现这是一个已知的问题

资料来源:

ASP.NET与Web开发

  • 创建Web Forms 4.5 WAP并打开Web表单页面时,在错误列表窗口中会收到以下错误:

  • 该项目将无任何问题地运行。错误CS0234命名空间“ASP”中不存在类型或命名空间名称“global_asax”(是否缺少程序集引用?) 错误CS0234命名空间“System”中不存在类型或命名空间名称“Linq”(是否缺少程序集引用?) 假设您在Visual Studio 2015 RC中为C#和VB使用了新的语言功能。在Web表单页面或Razor视图中使用C#或VB时,会收到运行时错误


要解决此问题,请安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet软件包。此软件包将用基于Roslyn的提供程序替换ASP.NET的机箱内CodeDom提供程序。

我解决此问题的两件事是重新定位框架,然后将其更改回原来的版本(使用4.5.1将其更改为4.5并返回)

在此之后,我在使用T4MVC时遇到了很多错误,我将其升级到了最新版本,但我可以看到,在源代码管理中,T4MVC是针对Framework4.5安装的,当您重新/安装一个新的nuget软件包时,它会更改目标框架,因此更改为4.5.1


在这之后,一切都正常了。我没有测试您是否只需要执行此答案的第二部分,但我会先尝试。

我解决此错误的方法是将我的代码表单Global.asax.cs移动到Startup.cs并删除Global.asax,以便我的项目中没有任何代码隐藏文件。有关详细信息,请参阅。

我为我的web项目安装了Microsoft.CodeDom.Providers.DotNetCompilerPlatform,然后删除了该软件包。错误消失了。

我发现,如果在运行生成时在Visual Studio 2015中打开了
App\u code
中的文件,那么我不会得到错误。一旦我关闭文件,错误就会再次出现。

在尝试了这里提出的各种解决方案后,结果证明,只要退出Visual Studio 2015,然后重新启动,就足以使解决方案/项目再次成功编译。

只需右键单击您的解决方案项目并单击CLEAN。我做到了这一点,它确实对我起了作用。我分享这个是因为谁知道它是否能帮助别人,就像它能帮助我一样

但是如果我把它从
App\u code
中取出,它将不会在我的Razor页面上被识别,因为要“共享”的from docs@functions应该在该文件夹中。从该文件夹中删除后,
名称“RazorFunctions”在当前上下文中不存在
。已确认…无需执行任何其他复杂操作,仅将所述文件从试图向应用程序的其他区域提供额外显示帮助的App_代码中移动到应用程序的其他区域不再可用,并且在尝试访问关联的“DisplayHelper”类时引发错误。您找到解决方案了吗?遇到了相同的问题。我遇到了相同的问题,手动编辑生成的文件
file.cshtml.72cecc2a.cs
,并将
ASP.global\u asax
更改为
System.Web.HttpApplication
,错误消失了。。。不知道为什么会这样though@OrlandoWilliam你能把这个贴出来作为回答吗。因为事实上,这也解决了我的问题,所以我可以接受它。谢谢,我已经放弃了阻止“错误”出现的努力。我想知道是否有任何方法可以抑制CS0234?这是可行的,但在更新文件后,问题再次出现。请参阅我的答案以获得解决方案,这是visual studio 2015的一个已知问题。有人知道为什么会发生这种情况吗?这是唯一一个对我有效的解决方案,不管出于什么原因,我还必须打开它在VisualStudio中抛出错误的文件,以使它停止显示在错误列表中。就像intellisense在我打开它之前没有重新考虑该文件。我需要在安装包abo后重新启动VS2015 RTM
protected static System.Web.HttpApplication ApplicationInstance {
    get {
        return ((System.Web.HttpApplication)(Context.ApplicationInstance));
    }
}