ViewBag and HtmlHelper errors: "One or more types needed to compile a dynamic expression cannot be found. Are you missing an assembly reference?"

Error ViewBag: "Cannot find one or more types needed to compile a dynamic expression. Are you missing an assembly reference?"

All HTML Helper methods contain an error: "The type argument for the method cannot be taken out of use. Try explicitly specifying the type arguments.

After spending the last two days wading through other posts related to this error, here is what I tried:

  • Visual Studio Repair
  • Reinstall Visual Studio
  • Making sure I have Microsoft.CSharp and System.Core links
  • Adding to global.asax: ViewEngines.Engines.Clear (); ViewEngines.Engines.Add (new CustomRazorViewEngine ());
  • Change Microsoft.CSharp Copy Local reference value from false to True
  • Today I installed the RC 3 update
  • GAC check for versions (only contains version 4.0.0.0)
  • Uninstall / reinstall the latest version of .NET framework

Here is my view. 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.0.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="WebApplication14" /> </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> </configuration> 

Web.Config :

 <?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=301880 --> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> </configSections> <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication14-20140703071149.mdf;Initial Catalog=aspnet-WebApplication14-20140703071149;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> <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> <authentication mode="None"/> <compilation debug="true" targetFramework="4.0"/> <httpRuntime/> </system.web> <system.webServer> <modules> <remove name="FormsAuthentication"/> </modules> </system.webServer> <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.Helpers" 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.0.0" newVersion="5.2.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="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.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> </assemblyBinding> </runtime> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v11.0"/> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> </providers> </entityFramework> </configuration> 

And here is my Global.asax:

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace WebApplication14 { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } } 

Actually waned at that moment about what to do. This happens when you open a new MVC project, as well as old ones. I realized that after a new installation and update, the error will disappear, but I was mistaken. Any help would be greatly appreciated.

Code example:

  @model WebApplication14.Models.ResetPasswordViewModel @{ ViewBag.Title = "Reset password"; } <h2>@ViewBag.Title.</h2> @using (Html.BeginForm("ResetPassword", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) { @Html.AntiForgeryToken() <h4>Reset your password.</h4> <hr /> @Html.ValidationSummary("", new { @class = "text-danger" }) @Html.HiddenFor(model => model.Code) <div class="form-group"> @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) </div> </div> <div class="form-group"> @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.PasswordFor(m => m.Password, new { @class = "form-control" }) </div> </div> <div class="form-group"> @Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" class="btn btn-default" value="Reset" /> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") } 
+8
c # visual-studio-2013 asp.net-mvc razorengine
source share
3 answers

I also had this problem. After I completed the following steps, this problem was fixed:

  • Visual Studio 3 Update Installed
  • Delete all temporary files (from \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET files, \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET files, \ AppData \ Local \ Temp \ Temporary ASP.NET files \ root)
  • Delete {ProjectName} .v12.suo from the project folder and csproj.user
  • Create a new asp.net mpc application and copy View web.config to the old application. There are differences between the old (left) and the new (right): http://screencast.com/t/x4WisCWf

EDIT: ignore line 20 from compare files.

+8
source share

I had a similar problem after the virtual machine crashed. The key step to solving my problem was the second bullet from Boies Ioan's answer - in particular, the last folder mentioned:

"Delete all temporary files (from \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET files, \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET files, \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ root ) "

+5
source share

Try restoring your solution (press F6 ). This fixed it for me.

0
source share

All Articles