名前System.Web.UI
空間は、既定で Razor テンプレートにインポートされます。
どうすればこれを回避できますか?
これがあなたの求めているものかどうかはわかりませんが、簡単な実験を行いました。うまくいくと思います。
MvcWebRazorHostFactory を少し拡張しました。新しいファクトリは基本的に、基本クラスによって作成されたホストを渡しますが、最初に名前空間を削除します。
これはクラスです:
namespace TestCode
{
using System.Web.WebPages.Razor;
using System.Web.Mvc;
using System.Web.Mvc.Razor;
public class CustomWebRazorHostFactory : MvcWebRazorHostFactory
{
public override WebPageRazorHost CreateHost(string virtualPath, string physicalPath)
{
WebPageRazorHost host = base.CreateHost(virtualPath, physicalPath);
host.NamespaceImports.Remove("System.Web.UI");
return host;
}
}
}
次に、web.config を変更して、標準のファクトリではなく自分のファクトリを使用するようにしました。
<system.web.webPages.razor>
<!--<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />-->
<host factoryType="TestCode.CustomWebRazorHostFactory" />
ビンゴ!