我在与 MVC 应用程序程序集分开的程序集中有一个 HtmlHelper 扩展方法。在扩展方法中,我想获取 MVC 应用程序程序集的版本号。这可能吗?
调用程序集是剃刀视图动态程序集,因此没有帮助。 HtmlHelper 中是否嵌套有一些对象可以为我提供 MVC 应用程序程序集的版本号?我一直在探索HtmlHelper 类文档 http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper.aspx但到目前为止还没有找到解决我的问题的方法。
Thanks!
这是一件臭名昭著的邪恶事情 - 因为不幸的是没有一种具体可靠的方法可以做到这一点。
然而,由于它是一个 MVC 应用程序,因此它很可能有一个 Global.asax.cs - 因此它有一个本地定义的HttpApplication
class.
从 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();
}
Note
您可能想知道为什么代码使用BaseType
应用程序实例的名称,而不仅仅是类型。这是因为 Global.asax.cs 文件是 MVC 应用程序的主要类型,但随后 Asp.Net 会动态编译另一个通过 Global.asax 继承的 HttpApplication 类型。
正如我之前所说;这适用于大多数 MVC 站点,因为按照惯例,它们都应该在 Global.asax.cs 文件中定义一个应用程序类(因为这就是项目的设置方式)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)