Function 在Orchard自定义主题和#x27;s的观点

Function 在Orchard自定义主题和#x27;s的观点,function,razor,themes,share,orchardcms,Function,Razor,Themes,Share,Orchardcms,我正在orchard中移植一个现有的站点,不幸的是,现有的css结构不是很好,我需要几个助手函数来使站点正常工作 目前,我正在自定义每个形状的alternate.cshtml文件中重写这些转换函数 它始终是相同的功能,我想将它移动到某个位置,以使其可重用且更易于维护 我还希望它有特定的主题(在我正在创建的主题文件夹中) 这个函数非常简单 @functions{ string ConvertColorToStyle(string color){ string menuStyle = "";

我正在orchard中移植一个现有的站点,不幸的是,现有的css结构不是很好,我需要几个助手函数来使站点正常工作

目前,我正在自定义每个形状的alternate.cshtml文件中重写这些转换函数

它始终是相同的功能,我想将它移动到某个位置,以使其可重用且更易于维护

我还希望它有特定的主题(在我正在创建的主题文件夹中)

这个函数非常简单

@functions{
string ConvertColorToStyle(string color){
    string menuStyle = "";
    switch(color)
    {
        case "Azure": menuStyle = "secondary_nav_area"; break;
        case "DarkGreen": menuStyle = "secondary_nav_areaDiscoServices"; break;
        case "LightGreen": menuStyle = "secondary_nav_areaPreClinAndClinical"; break;
        case "Violet": menuStyle = "secondary_nav_areaAPI"; break;
        case "LightViolet": menuStyle = "secondary_nav_areaSSC"; break;
        case "DarkAzure": menuStyle = "secondary_nav_areaPharma"; break;
        case "DeepAzure": menuStyle = "secondary_nav_areaIDFDaM"; break;
        case "DeepBlue": menuStyle = "secondary_nav_areaIDDS"; break;
        case "Orange": menuStyle = "secondary_nav_areaClinServices"; break;
        case "Cyan": menuStyle = "secondary_nav_areaConsulting"; break;
        case "Indigo": menuStyle = "secondary_nav_areaINDiGO"; break;
        case "LightAzure": menuStyle = "secondary_nav_areaPAC"; break;
        default: menuStyle = "secondary_nav_area";
        break;
    }
    return menuStyle;
}}
但是我想在多个视图中共享它,比如在asp.net mvc项目的App_Code文件夹中放置function.cshtml文件可以做什么


有没有办法在Orchard中“我的主题”的所有视图中共享此功能?

当然:向主题添加一个与主题同名的项目文件,然后向其中添加一个cs文件,其中包含一个公开该方法的静态类。然后,您就可以在视图中使用该功能。

有效!谢谢我只需要注意:该项目可以是一个普通的Windows库项目,但需要存在AssemblyInfo.cs文件。然后,通过声明@using指令可以访问定义的静态类中的方法,并且项目的名称空间(默认情况下是主题的名称)可以访问静态方法,该静态方法指定类的名称以及方法本身,就像在普通mvc应用程序中一样。不需要编译项目,orchard自动动态编译自身。注意:需要在项目中对.cs文件进行每次修改后重新启动IISExpress,以便orchard获取最新版本