Luc*_*Sam 11 c# reflection asp.net-mvc asp.net-mvc-3
我在与MVC应用程序程序集分开的程序集中有一个HtmlHelper扩展方法.在扩展方法中,我想获得MVC应用程序程序集的版本号.这可能吗?
调用程序集是剃刀视图动态程序集,因此无济于事.是否有一些嵌套在HtmlHelper中的对象可以为我提供MVC应用程序组件的版本号?我一直在探索HtmlHelper类文档,但到目前为止还没有找到解决我问题的方法.
谢谢!
And*_*tan 17
这是一个臭名昭着的邪恶之物 - 因为遗憾的是,没有一种特定的可靠方法可以做到这一点.
但是,由于它是一个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();
}
Run Code Online (Sandbox Code Playgroud)
您可能想知道为什么代码使用BaseType
应用程序实例,而不仅仅是类型.这是因为Global.asax.cs文件是MVC应用程序的主要类型,但随后Asp.Net动态编译另一个通过Global.asax继承的HttpApplication类型.
正如我先前所说; 这适用于大多数MVC站点,因为它们都应该按照惯例在Global.asax.cs文件中定义应用程序类(因为这是项目设置的方式).
万一有人碰到这个,这对我有用(MVC5 VS2013).直接进入视图:
@ViewContext.HttpContext.ApplicationInstance.GetType().BaseType.Assembly.GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8743 次 |
最近记录: |