MVC在View的最後處理中是將View的文件頁面編譯成一個類,這個類必須繼承自WebViewPage,WebViewPage默認添加對AjaxHelper和HtmlHelper的支持web
public virtual void InitHelpers() { Ajax = new AjaxHelper<object>(ViewContext, this); Html = new HtmlHelper<object>(ViewContext, this); Url = new UrlHelper(ViewContext.RequestContext); }
全部當咱們在View頁面中使用@語法時能夠調用Html等方法,觀察Orchard及Nop項目對WebViewPage中用的最多的是多語言化this
public Localizer T { get { if (_localizer == null) { //null localizer //_localizer = (format, args) => new LocalizedString((args == null || args.Length == 0) ? format : string.Format(format, args)); //default localizer _localizer = (format, args) => { var resFormat = _localizationService.GetResource(format); if (string.IsNullOrEmpty(resFormat)) { return new LocalizedString(format); } return new LocalizedString((args == null || args.Length == 0) ? resFormat : string.Format(resFormat, args)); }; } return _localizer; } }
這倆項目還在自定義的Webviewpage中自定義了一些局部標籤。spa
在Views中的Web.config中修改以下節點值,可將系統默認webviewpage修改爲自定義的orm
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="Nop.Web.Framework.ViewEngines.Razor.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="Nop.Web.Framework" /> <add namespace="Nop.Web.Framework.UI" /> <add namespace="Nop.Web.Framework.UI.Captcha" /> </namespaces> </pages> </system.web.webPages.razor>