在控制器中获取抽象类方法的引用

时间:2017-07-13 11:39:42

标签: c# asp.net-mvc abstract-class

在我的应用程序中,我有一个用于获取多语言短语的抽象类。

它在我的所有视图中都可以正常工作,但现在我的控制器也需要这种方法。

这是Abstract类的代码。

public abstract class SurveyViewPage<TModel> : System.Web.Mvc.WebViewPage<TModel>
{
    public string Phrases(string Phrase)
    {
        List<MultilanguagePhrasesVM> List_Multilanguage = StaticCacheLocaleStringResource.CheckForCachedPhrases();
        var PhraseValue = List_Multilanguage.Where(m => m.LanguagePhrase == Phrase).FirstOrDefault();

        if (PhraseValue == null)
        {
            return Phrase;
        }
        else
        {
            return PhraseValue.LanguagePhrase_Value;
        }
    }
}
  

我想要什么?

我也希望在我的控制器中访问此Phrases()方法。

我尝试了几种方法来实现这一目标,但没有一种方法能够显着发挥作用。

任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

要从控制器访问它,您需要将方法移动到另一个类。作为一种简单的方法,您可以创建一个静态助手类并将该方法实现为静态方法,以便您可以从控制器和视图中以这种方式访问​​它:

MyStaticClass.Phrases("phrase")

答案 1 :(得分:1)

Yo可以通过这种方式重新设计代码:

public abstract class SurveyViewPage<TModel> : System.Web.Mvc.WebViewPage<TModel>
{
    public string Phrases(string Phrase)
    {
        return SomeHelper.Phrases(Phrase);
    }
}

public static class SomeHelper
{
    public static string Phrases(string Phrase)
    {
        List<MultilanguagePhrasesVM> List_Multilanguage = StaticCacheLocaleStringResource.CheckForCachedPhrases();
        var PhraseValue = List_Multilanguage.Where(m => m.LanguagePhrase == Phrase).FirstOrDefault();

        if (PhraseValue == null)
        {
            return Phrase;
        }
        else
        {
            return PhraseValue.LanguagePhrase_Value;
        }
    }
}

在控制器中使用SomeHelper