在我的应用程序中,我有一个用于获取多语言短语的抽象类。
它在我的所有视图中都可以正常工作,但现在我的控制器也需要这种方法。
这是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()方法。
我尝试了几种方法来实现这一目标,但没有一种方法能够显着发挥作用。
任何人都可以帮我这个吗?
答案 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
。