【问题标题】:Running an action method on every view在每个视图上运行一个动作方法
【发布时间】:2014-05-30 06:50:41
【问题描述】:

我想在每个页面上显示当前项目的版本信息。

我现在的做法是这样的:

在我的 homecontroller 的 Index 方法中:

ViewBag.Version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

在_layout.cshtml(masterpage)里面:

@ViewBag.Version

这里的问题是,它只会显示一次,但我想在每个页面/视图上显示版本。

这是我的路由配置:

        public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }


        );
    }

我需要在这里改变什么吗?

Ty 帮忙

【问题讨论】:

    标签: asp.net razor asp.net-mvc-5


    【解决方案1】:

    为什么不直接打电话

    @System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
    

    _Layout.cshtml 视图上?

    MVC 有不同的启动上下文,需要变通方法来给版本发短信:

    @typeof(HomeController).Assembly.GetName().Version
    

    HomeController 可以替换为 MVC 应用程序程序集中的任何其他类型。请参阅this question 了解更多信息。

    【讨论】:

    • 因为它只显示 0.0.0.0 而不是真正定义的版本号
    • 你在AssemblyInfo.cs中定义了版本吗?
    • 是的,在 Properties 文件夹下(文件的位置),它定义如下: [assembly: AssemblyVersion("1.0.0.2")] [assembly: AssemblyFileVersion("1.0.0.2" )]
    • @user254197 尝试使用完整的命名空间:W4K.mvc.Controllers.HomeController 或其他东西。
    【解决方案2】:

    只需将其放入布局中即可。

    <label>@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version</label>
    

    【讨论】:

    • 它只显示0.0.0.0而不是真正定义的版本号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多