Razor Compiler Warning/Errors - ASP.NET MVC 4

2019-02-01 13:39发布

问题:

I have an issue which seems to have been reported here:

Need razor view engine auto-complete to work in a class library?

My issue is the following Warning:

G:\Accountable\Accountable\Views\LedgerUser\EditorTemplates\LedgerServiceViewModel.cshtml: ASP.NET runtime error: There is no build provider registered for the extension '.cshtml'. You can register one in the section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

This issue is apparent in all my views. Sample images below.

Now all posts and references online that I have found are referencing to adding various Web.config (as mentioned in the previous post) options, but this doesn't seem to work, as I have these configurations defaulted in the project. Here are my Web Configs:

Main Web.config

View root Web Config

I think this issue maybe while im also getting the following compiler errors on the Views:

The name 'Html' does not exist in the current context

What am I doing wrong?

回答1:

Arrrgghhh i had missed the following from the ROOT Web.config:

 <compilation debug="true" targetFramework="4.0">
  <!-- New -->
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

This allowed fixed the error and allowed me to use Intellisense within the View.



回答2:

Putting back the following lines in root Web.config fixed:

<system.web>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <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="System.Web.WebPages" />
      </namespaces>
    </pages>
</system.web>


回答3:

I got it working by simply unloading and reloading the project. All the namespaces above were already there in the root web.config and I was still getting this issue.



回答4:

Removing the temporary asp.net framework files works for me.

Stop IIS and remove everything under this folder:

C:\Windows\Microsoft.NET\Framework64\[framework version]\Temporary ASP.NET Files

Then restart IIS. Bam!



回答5:

I tried by restart IIS, removed Temporary ASP.NET Files and changing the compilation tag in the web config file. None of them work for me.

I fixed the issue by removing and adding System.Web.MVC to the project.

In my case Razor syntax are Highlighted in red.