【问题标题】:creating html helper equavalent to nopcomerce @T() helper创建等效于 nopcommerce @T() 帮助器的 html 帮助器
【发布时间】:2016-12-23 07:27:09
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    你需要告诉 razor 使用你自己的WebViewPage。您在Views 文件夹下的web.config 文件中声明它。您的自定义WebViewPage 必须在pages 元素的pageBaseType 属性中指定。所有 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>
    

    【讨论】:

    • 这就是我要找的。感谢您的帮助。
    【解决方案2】:

    你签到Nop.Web.Framework了吗?

    T 是 nopcoomerce 的自定义 HTML 助手,您可以在以下位置找到它的实现 Nop.Web.Framework &gt; ViewEngines &gt; Razor &gt; 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;
            }
        }
    

    希望这会有所帮助!

    【讨论】:

    • 我做了同样的事情,但我无法在 .cshtml 页面中调用它
    • 我已经尝试了以上所有的东西。如果您能帮助我在 .cshtml 页面中访问它,那将非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 2014-09-20
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多