当前位置: 首页 > 知识库问答 >
问题:

名称viewbag在当前上下文mvc 5中不存在

白念
2023-03-14

您好,我正在使用visual studio Professional2015,我创建了一个MVC5项目,但我有3个错误:

  • 名称“viewbag”在当前上下文中不存在
  • 名称“RenderBody”在当前上下文中不存在
  • 名称“RenderSection”在当前上下文中不存在

我正在使用MVC5,我在网上搜索,找到了很多解决方案,但他们不适合我的情况。

这是\views\web.config

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />

        <add namespace="TLN" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>

  <system.web>
    <compilation>
      <assemblies>
        <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

      </assemblies>
    </compilation>
  </system.web>
</configuration>

这是\web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0"/>
    <add key="webpages:Enabled" value="false"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed"/>
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.5.2.14234" newVersion="1.5.2.14234"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>
</configuration>

这是_viewstart.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - Contoso University</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="navbar-inner">
            <div class="container">
                <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Contoso University", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
                <div class="nav-collapse collapse">
                    <ul class="nav">
                        <li>@Html.ActionLink("Home", "Index", "Home")</li>
                        <li>@Html.ActionLink("About", "About", "Home")</li>
                        <li>@Html.ActionLink("Students", "Index", "Student")</li>
                        <li>@Html.ActionLink("Courses", "Index", "Course")</li>
                        <li>@Html.ActionLink("Instructors", "Index", "Instructor")</li>
                        <li>@Html.ActionLink("Departments", "Index", "Department")</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <div class="container">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - Contoso University</p>
        </footer>
    </div>

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

有没有人知道这种情况下的错误是什么?

共有2个答案

赵开诚
2023-03-14

当涉及到修复所有与视图中的智能相关的错误时(Razor MVC)

尽管在web.config文件中完成了所有正确的配置,但我还是遇到了这个问题。

当我打开.cshtml文件并构建时,我得到了许多错误。

发现组件缓存中有一些坏文件,阻止Razor视图识别ViewBag、Model和HTMLHelpers。删除这些文件解决了问题(下次打开Visual Studio时会创建这些文件的好版本)。

请按以下路径查找文件:

C:\Users\your.name.here\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

删除所有四个文件:

  • Microsoft.VisualStudio.Default.Cache
  • Microsoft.VisualStudio.Default.Catalogs
  • Microsoft.VisualStudio.Default.Err
  • Microsoft.VisualStudio.Default.External

我关闭了我的项目,删除了该路径上的文件并重新打开了我的项目,清理了解决方案并重新构建了它,问题就解决了

删除临时ASP.NET文件也有帮助。C:\users\your.name.here\appdata\local\temp\临时ASP.NET文件。

这对我管用。

谢谢!

彭星津
2023-03-14

首先,_viewstart.cshtml文件应该包含您的.cshtml布局文件,它引用了所有.cshtml视图的标记。

viewstart.cshtml(_V)

@{
     Layout = "~/Views/Shared/_Layout.cshtml";
}

layout.cshtml(_L)

<!DOCTYPE html>
<html>
<head>
...
    <title>@ViewBag.Title</title>
</head>
<body>
   @* this method below should be exist in your body tag *@
   @RenderBody()

   @RenderSection(...)
</body>
</html>

之后,您可以在使用上述自定义布局的视图页上使用viewbag.title:

view.cshtml

@{
     ViewBag.Title = "Page Title";
     Layout = "~/Views/Shared/_Layout.cshtml";
}
 类似资料:
  • 我再次开始在ASP.NET中进行开发,但在Visual Studio中遇到了一个小错误。我的.cshtml文件在使用一些razor函数时显示错误。例如“名称'viewbag'在当前上下文中不存在”。这里有一张图片: 我正在使用一个演示项目。您可以在这里找到这个项目:https://github.com/wintellight/angula-mvc-cookbook/tree/master/basi

  • 问题内容: 尝试使用WebMatrix启动网站时出现此错误。我有一个.cs文件可以拨打电话。 我的项目中有一个名为“ dbase”的数据库。自从使用WebMatrix启动网站以来,我没有web.config文件,也没有使用WebMatrix包的导入,因此我认为我不需要它们。我需要将代码包装在Razor标签中吗?这也给我造成了错误。 是什么原因造成的?有人对此有任何解决方案吗? 问题答案: 您需要一

  • 我正在遵循一个将PayPal集成到MVC4的指南。然而,我遇到了这个错误“名称”session“在当前上下文中不存在。”名称“response”在当前上下文中不存在(&)。 https://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/checkout-and-payp

  • 我编写了一些代码来验证用户是否可以登录到酒店预订平台&我还添加了一个验证步骤。我在方法上得到一个错误。代码中的其他内容都很好。 我做了一些研究,以寻求可能的解决办法。 下面是我在StackOverflow上找到的解决方案:Assert方法错误 删除绑定后,我得到了同样的错误-Microsoft.VisualStudio.TestTools.UnitTesting;使用nunit.framework

  • 在我的MVC4应用程序中进行了重大重构之后,Razor在调试视图时显示了此错误: 名称“model”在当前上下文中不存在。 这是一段令人反感的代码: 我知道的用法是正确的。 为什么会出现这种情况?我该怎么修好它?

  • 我正试图为Facebook通知创建绑定。aar库。 然而,我得到了编译错误: 严重性代码说明项目文件行抑制状态错误CS0103名称'CreateAsset'在当前上下文中不存在FBNotificationsC:\users\Jakub\Documents\Visual studio 2015\Projects\FBNotifications\FBNotifications\OBJ\Release\