web-dev-qa-db-ja.com

「モデル」という名前は、現在のコンテキストASP.NETMVC5には存在しません

プラグインをNopCommerce3.2にコーディングしていますが、ビューで上記のエラーが発生しますが、「レイアウト」と「HTML」でもエラーが発生します。別のプラグインで動作するのと同じWeb.Configをコピーしました。また、動作中のプラグインで使用されているものと同じ参照を追加しました。プラグインをコンパイルすると機能しますが、インテリセンスがなく、VisualStudioがエラーを正しくマークすることを信頼できません。 VS2013 Professional Update1を使用しています。

Web.Configファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<!-- We use this file to make razor intellisense work in the class library -->




<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>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation targetFramework="4.5" />
    <pages
    validateRequest="false"
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add Assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
      <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.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="Nop.Web.Framework.ViewEngines.Razor.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
</configuration>

編集:この質問が調査されていないことがわかった場合は申し訳ありませんが、解決策を見つけるために何時間も費やしたことを保証します(スタックオーバーフローで見つけた同様の質問を含み、web.configを問題として指摘していますそのファイルを質問に含めた理由)が見つかりません。

8
hjd

このエラーは、おそらくResharperが原因でした。私たちはGITを使用する3人の開発者のチームです。私たちの1人がResharperをインストールしましたが、これが他の2人のエラーの原因である可能性があります。 Resharperトライアルをインストールすると、突然再び機能しました。残念ながら、Resharperを再度アンインストールすると機能しません...

5
hjd

このセクションをsystem.webに追加してみてください。 (私が追加したバージョンが実際に使用しているものであることを確認してください)

<compilation targetFramework="4.5">
  <assemblies>
    <add Assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add Assembly="System.Web.Helpers, Version=2.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=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add Assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

.cshtmlビューファイルを閉じます。プロジェクトを再構築します。そして、それらを再び開きます。

3

プロジェクトMVCNuget Packageをアンインストールして再インストールすると、修正されました。プロジェクトの.netバージョンを変更したときに、私のものが失敗しました。

3
netslaves

ビューで定義した名前空間がモデルの名前空間と一致していることを確認してください。

2
mariann

プロジェクトのプロパティをターゲット4.5.1に変更した場合

他の多くの場所のtargetFrameworkはまだ45と言います

TargetFrameworkは、ルートweb.configおよびすべての種類のpackages.configで3〜4回見つけることができます。

同じ問題が発生しました。プロジェクトをターゲット4.5に変更すると、問題は解決しました。

4.5.1をターゲットにしないのが最善

2
user965445

MVC5プロジェクトでも同じエラーが発生しました。私の場合、ViewsフォルダーのWeb.configが何らかの理由で公開されていませんでした。それを追加し直すと問題が解決しました。

2
Stephen Zeng

私も同じ問題を抱えていました。解決策は、プロジェクトMVC NugetPackageをアンインストールして再インストールすることでした。

http://mhammadchehab.com/wordpress/2013/12/enabling-intellisense-for-razor-in-class-library-mvc-5-razor-3-0/

2
David

プロジェクトプロパティすべての構成プロジェクト出力パスを/binに変更します。これは奇妙なことですが、VS プロジェクト出力/bin/Debugまたは/bin/Releaseにプッシュされると、インテリセンスが完全に無効になります。

project properties

2

私の場合、Visual Studioを閉じてこのフォルダーを削除することにより、 Visual Studioコンポーネントキャッシュをリセット する必要がありました。

C:\ Users\[username]\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

1
Vojta Jemelka

同じエラーが発生し、

コンソールアプリケーションでcshtmlインテリセンスを取得しようとしているだけなので、標準のベースWebビューページに戻ることができました。

1