2013-02-13 2 views
4

По умолчанию следующий появляется в коде, созданный Razor:Где заданы пространства имен Razor cshtml по умолчанию?

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Web; 
using System.Web.Helpers; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.WebPages; 

Где они берутся? Я просмотрел файл machine.config и root.config на уровне корня, и его там нет.

Я проверил я могу добавить к этому списку с помощью:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     .... etc 

И я предполагаю, что я мог бы быть в состоянии удалить с помощью <clear/> ... но мне интересно знать, где они для начала.

ответ

2

Похоже, что эти пространства имен по умолчанию жестко закодированы в WebPageRazorHost.cs и MvcWebPageRazorHost.cs (ссылки на Github).

Бывший добавляет все пространства имен в конструкторе (включая System.Web.WebPages.Html), а второй удаляет его, используя метод, называемый GetRidOfNamespace (!)

Я пытался дозвониться <clear/> но, к сожалению/удивительно это не имело никакого эффекта.

NamespaceImports является общественным членом RazorEngineHost, так что, надеюсь, его можно настроить в коде.

Смежные вопросы