147

pages/namespaceswebconfigの要素の名前空間を取得するために使用する必要がある何らかの魔法はありますか?

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

上記は機能したくないだけです。@using MyCustomHelpersページの上部に配置すると魔法のように機能するため、名前空間が問題ないことはわかっています。

これは、すべてのページの上部Html.SomeFunction()に配置しなくても を機能させることができるようにするためです@using

4

5 に答える 5

163

更新: MVC 3 RC に適用される私の更新された回答をご覧ください: Razor HtmlHelper Extensions (またはビューの他の名前空間) が見つかりません

これは、MVC 3 Preview 1 と MVC 3 Beta (本日リリース) の間で変更されました。Preview 1 では、Razor は WebForms 名前空間構成セクションを使用しました。ただし、ベータ版には、WebForms とは別の新しい構成セクションがあります。以下を web.config ファイルに追加する必要があります (または、テンプレートから新しいプロジェクトを開始するだけです)。

<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>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="MyCustomHelpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

エディターが変更を反映するには、ファイルを閉じてから再度開く必要がある場合があることに注意してください。

Razor を MVC3 ベータ版で動作させるには、web.config で必要な変更が他にもあることに注意してください。そのため~\View\Web.config、ベータ版プロジェクト テンプレートに同梱されているファイルを確認することをお勧めします。

于 2010-10-06T20:04:49.963 に答える
50

名前空間宣言をWeb.configルートの「Views」フォルダーおよび/または現在の領域の「Views」フォルダー (ビューの場所によって異なります) に配置すると、期待どおりに機能するはずです。

于 2010-10-06T17:23:13.407 に答える
6

このhttp://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspxを見つけました。これは、すべてのカミソリ ページにカスタム名前空間を追加する方法を説明しています。

基本的にこれで作れます

using Microsoft.WebPages.Compilation;
public class PreApplicationStart
{
   public static void InitializeApplication()
   {
       CodeGeneratorSettings.AddGlobalImport("Custom.Namespace");
   }
}

次のコードを AssemblyInfo.cs に追加します。

[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]

メソッド InitializeApplication は、global.asax の Application_Start の前に実行されます。

于 2011-04-27T04:51:20.683 に答える
4

価値のある別の手法として、デフォルトでビュー エンジンに既に含まれている System 名前空間にヘルパー拡張クラスを配置する方法があります。例えば:

namespace System.Web.Mvc
{
    public static class HtmlHelper_MyExtensions
    {
        ...
    }
}

このように、クラスを含むライブラリが参照されている限り、すべてが参照されます。クラスを拡張しているのでSystem.Web.Mvc、拡張メソッドを同じ名前空間に配置することは合理的に受け入れられるようです。

于 2013-07-12T14:21:56.813 に答える
0

ビューのルートにある web.config に変更が加えられたことを確認した後、ビューを閉じて再度開いてみてください。

閉じて再開すると問題が解決しました。

ここを参照してください:

かみそりビューでの ASP.NET MVC 4 名前空間の問題

于 2016-10-12T21:59:15.340 に答える