19

MonoDevelop で MVC 3 Razor プロジェクトを実行しようとしています。

Mono 2.10.9 / MonoDevelop 3.0.4.7 を使用して新しい ASP.net MVC 2 プロジェクトを作成し、以下の DLL を既存の Windows ベースの MVC3 プロジェクトから Mono プロジェクトの「bin」ディレクトリにコピーしました。

System.Web.Helpers.dll
System.Web.Razor.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.dll
System.Web.WebPages.Razor.dll

Mono / .NET 4 を使用するようにプロジェクトを設定しました。デフォルトの Index ファイルは削除され、Index.cshtml ファイルに置き換えられました。プロジェクトを実行すると、次のエラーが表示されます。

The view at '~/Views/Home/Index.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.

奇妙なのは、私が以前にこのプロセスを経験したことがあり、MVC 3 ページが機能していたことです。Mono(Razorをサポートしていると主張しています...?)をアップグレードしてから、それが機能しなくなりました。ただし、以前に MVC3 で作成したプロジェクトはすべて、新しい Mono バージョンでコンパイルおよび機能するようです。

誰かがこれらの木の中でどこで木を見つけることができるかを指摘できれば、とても感謝しています:)

4

3 に答える 3

52

誰かがこれを経験した場合、それは単に "Views" フォルダーの下にある web.config ファイルが更新されておらず、MVC3 Razor コンポーネントを参照していることが原因です。当たり前。

最も簡単なのは、既存の MVC3 プロジェクトからコピーすることです。

于 2012-10-30T23:20:01.633 に答える
29

解決策 1.

cshtml ファイルの上に次の行を追加します。

@inherits System.Web.Mvc.WebViewPage

ASP.NET MVC テンプレートのビューの cshtml ファイルの先頭にこの行がないことを不思議に思っているに違いありません。それでは、2 番目の解決策を見てみましょう。

解決策 2。

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=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection,
System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35"
requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,
System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35"
requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage" ></pages>
  </system.web.webPages.razor>
</configuration> 

実際に必要な設定は、pageBaseType="System.Web.Mvc.WebViewPage" です。その他のテキストは、タグを定義するためにのみ必要です。

参考リンク:ここをクリック

于 2016-06-01T08:49:54.787 に答える