Razor Compiler Warning/Errors - ASP.NET MVC 4

2019-02-01 12:55发布

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.

enter image description here

enter image description here

enter image description here

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

enter image description here

What am I doing wrong?

5条回答
趁早两清
2楼-- · 2019-02-01 13:29

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.

查看更多
我命由我不由天
3楼-- · 2019-02-01 13:31

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.

查看更多
做自己的国王
4楼-- · 2019-02-01 13:45

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>
查看更多
beautiful°
5楼-- · 2019-02-01 13:48

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.

查看更多
聊天终结者
6楼-- · 2019-02-01 13:49

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!

查看更多
登录 后发表回答