【问题标题】:Global functions in razor view engine剃刀视图引擎中的全局函数
【发布时间】:2012-08-30 19:51:43
【问题描述】:

我想在我的 razor 视图引擎中使用像 w 这样的全局方法来本地化我的 MVC 应用程序。我试过了

@functions{
    public string w(string message)
    {
        return VCBox.Helpers.Localization.w(message);
    }
}

但我应该在我的每个剃须刀页面中都有这个,我不想要那个。 我想知道如何才能拥有一个可以在项目的每个页面中使用的全局函数?

【问题讨论】:

    标签: c# asp.net-mvc c#-4.0 razor asp.net-mvc-4


    【解决方案1】:

    您可以扩展 HtmlHelper:

    扩展:

    public static class HtmlHelperExtensions
    {
        public static MvcHtmlString W(this HtmlHelper htmlHelper, string message)
        {
            return VCBox.Helpers.Localization.w(message);
        }
    }
    

    cshtml:

    @Html.W("message")
    

    【讨论】:

    • 难道没有办法只使用w 方法吗?
    • @ahmadalishafiee 并非没有在当前范围内声明它(就像您在问题示例中所做的那样)。
    • @ahmadalishafiee 看到这个问题stackoverflow.com/questions/4760783/…
    【解决方案2】:

    扩展方法怎么样:

    namespace System
    {    
        public static class Extensions
        {
            public static string w(this string message)
            {
                return VCBox.Helpers.Localization.w(message);  
            }
        }
    }
    

    这样称呼:

    "mymessage".w();
    

    或者:

    string mymessage = "mymessage";
    mymessage.w();
    

    或者:

    Extensions.w("mymessage");
    

    【讨论】:

    • 如你所见,我可以使用VCBox.Helpers.Localization.w(message);,但我需要更好的方法!
    • @ahmadalishafiee。你会得到最短的将有一个“。”在里面。您如何定义“更好的方式”?
    • 我想要像 Wordpress 和其他应用程序一样的 w。有一个write 方法可以写东西,现在我想让w 写但本地化写。
    • 改为针对 ViewPage 编写扩展方法。 public static string w(this ViewPage view, string message){/* do stuff */}。然后你应该可以直接w("mymessage")。
    • 我试过了,但是编译器没有找到w。我还在web.config的<namespace>部分中添加了<add namespace="VCBox.Helpers"/>
    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2014-03-21
    相关资源
    最近更新 更多