创建与nopcomerce @T()助手

时间:2016-12-23 07:27:09

标签: asp.net-mvc localization html-helper nopcommerce

我正在研究NopCommerce,它有一个HTML帮助器@T(""),它接受​​一个字符串键并从数据库中获取它的值。

我想在我的项目中实现这一点。我google了很多,但没有找到任何关于如何创建这样的辅助方法的帮助。

有人可以帮我创建这样的类似助手吗?

2 个答案:

答案 0 :(得分:3)

你需要告诉剃须刀使用你自己的WebViewPage。您在web.config文件夹下的Views文件中声明了这一点。必须在WebViewPage元素的pageBaseType属性中指定自定义pages。所有cshtml实现都将继承您的自定义WebViewPage,您可以访问自定义WebViewPage的pulic或protected属性和方法。

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

答案 1 :(得分:2)

您是否登记了Nop.Web.Framework

T是nopcoomerce的自定义HTML助手,您可以在其中找到它的实现 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;
        }
    }

希望这有帮助!