1. ホーム
  2. asp.net-mvc

[解決済み] Razorベースのビューに参照されているアセンブリが表示されない

2022-10-14 22:08:54

質問

他のアセンブリからのクラスに基づいて、strong-typedのビューを作成しようとしています。しかし、何らかの理由で、私のRazorビューは、私のプロジェクトで参照される他のアセンブリの可視性を持っていないようです。

@model MyClasses.MyModel

の結果は、Visual Studio 2010 のエラー、 "型または名前空間名 MyClasses が見つかりませんでした(usingディレクティブまたはアセンブリ参照が不足していますか)。

標準のビューエンジンで参照される同じクラスは問題なく動作します。ビューの本体でクラスを参照しようとすると、同じ問題が発生します。

私はRazorについて何かを見逃しているのでしょうか、それとも他の方法でアセンブリを参照する必要があるのでしょうか?

どのように解決するのですか?

Razor のビューの名前空間を参照するために使用される新しい設定セクションがあります。

を開いて web.config ファイルを Views を作成し、以下の内容を確認してください。

<configuration>
    <configSections>
        <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
            <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.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=3.0.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.Routing" />
                <add namespace="SquishIt.Framework" />
                <add namespace="Your.Namespace.Etc" />
            </namespaces>
        </pages>
    </system.web.webPages.razor>
</configuration>

また、共有レイアウトにusingステートメントを追加することもできます。

@using Your.Namespace.Etc;
<!DOCTYPE html>
<head>
....

Web.configの編集後、Visual Studioを再起動すると、変更が適用されます。