2016-12-23 2 views
3

Я работал над NopCommerce, и у него есть HTML-помощник @T(""), который берет строковый ключ и извлекает его значение из базы данных.Создание html helper equavalent для nopcomerce @T() helper

Я хочу реализовать это в своем проекте. Я много гугл, но не нашел никакой помощи в том, как они создали вспомогательный метод, подобный этому.

Может ли кто-нибудь помочь мне создать подобный помощник, как это?

ответ

3

Вам необходимо указать бритву, чтобы использовать свои собственные WebViewPage. Вы объявляете это внутри файла web.config под папкой Views. Ваш пользовательский WebViewPage должен быть указан в атрибуте pageBaseType элемента pages. Все реализации cshtml наследуют ваш пользовательский номер WebViewPage, и вы можете получить доступ к свойствам и методам, сохраненным в виде пульса или защищенного вами объекта WebViewPage.

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, 
       Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="Custom.MyCustomWebViewPage"> 
</system.web.webPages.razor> 
+0

вот что я искал. Спасибо за вашу помощь. –

2

Вы зарегистрировались в Nop.Web.Framework?

T Является ли пользовательский HTML помощник nopcoomerce, вы можете найти его реализации на Nop.Web.Framework > ViewEngines > Razor > WebViewPage

Это просто называют GetResource службу, чтобы получить строку ресурсов.

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; 
     } 
    } 

Надеюсь, это поможет!

+0

Я сделал то же самое, но я не могу назвать его на .cshtml странице –

+0

Я уже пробовал все вышеперечисленное. Если бы вы могли помочь мне получить доступ к нему на странице .cshtml, это было бы очень полезно. –