Ответ 1
Это печально злая вещь, потому что, к сожалению, нет особого надежного способа сделать это.
Так как это приложение MVC, тем не менее, есть вероятность, что у него есть Global.asax.cs - поэтому он имеет локально определенный класс HttpApplication
.
Внутри html-помощника вы можете получить следующее:
public static string AppVersion(this HtmlHelper html)
{
var appInstance = html.ViewContext.HttpContext.ApplicationInstance;
//given that you should then be able to do
var assemblyVersion = appInstance.GetType().BaseType.Assembly.GetName().Version;
//note the use of the BaseType - see note below
return assemblyVersion.ToString();
}
Примечание
Вы можете задаться вопросом, почему код использует BaseType
экземпляра приложения, а не просто тип. Это потому, что файл Global.asax.cs является основным типом приложения MVC, но затем Asp.Net динамически компилирует другой тип HttpApplication, который наследуется от него через Global.asax.
Как я сказал ранее; это работает на большинстве сайтов MVC, потому что все они должны иметь класс приложения, определенный в файле Global.asax.cs по соглашению (потому что это способ, которым настроен проект).