Webconfigの_pages/namespaces
_要素の名前空間を取得するために使用する必要がある魔法のようなものはありますか?
_<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>
_
上記のdoes n'tは動作したいだけです。 _@using MyCustomHelpers
_をページの先頭に配置すると、魔法のように機能するため、名前空間が適切であることを知っています。
これは、すべてのページの先頭に_@using
_を置くことなく、Html.SomeFunction()
を機能させることができるようにするためです。
Update:MVC 3 RCに適用される更新された回答をご覧ください: Razor HtmlHelper Extensions(またはビューの他の名前空間)Not見つかった
これは、MVC 3 Preview 1とMVC 3 Beta(今日リリースされた)の間で変更されました。プレビュー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
Betaプロジェクトテンプレートに同梱されているファイル。
名前空間宣言をルートの「Views」フォルダーおよび/または現在の領域の「Views」フォルダーのWeb.config
に配置すると(ビューの場所に応じて)、期待どおりに動作するはずです。
私はこれを見つけました 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")]
global.asaxのApplication_Startの前にInitializeApplicationメソッドが実行されます
価値のある別の手法として、ヘルパーエンジン拡張クラスを、既定でビューエンジンに既に含まれているSystem名前空間に配置するだけです。例えば:
namespace System.Web.Mvc
{
public static class HtmlHelper_MyExtensions
{
...
}
}
このように、クラスを含むライブラリが参照されている限り、すべてがそれを見ることができます。 System.Web.Mvc
クラスを拡張しているので、同じ名前空間に拡張メソッドを配置することは合理的に受け入れられるようです。
ビューのルートでweb.configに変更が加えられたことを確認してから、ビューを閉じて再度開いてみてください。
閉じて再開すると、問題が解決しました。
こちらをご覧ください: