代码之家  ›  专栏  ›  技术社区  ›  Nicolas Cadilhac

ASP.NET MVC:如何根据URL的内容动态生成元标记?

  •  0
  • Nicolas Cadilhac  · 技术社区  · 17 年前

    这是一个想法:

    当用户希望看到/controller/action时,我希望页面有一个“robots”元标记,其值设置为“all”。 用户何时想查看/控制器/操作?sort=hot&page=2(即它有一个查询字符串),然后我希望页面有一个“robots”元标记,其值设置为“noindex”。 当然,这只是一个例子,它可能是这个问题存在的另一个标签。

    在MVC体系结构的哪个阶段,我可以放置一个钩子,以便视图在母版页中生成我想要的标记?

    1 回复  |  直到 17 年前
        1
  •  2
  •   Kyle West    17 年前

    我做了一些类似的事情来生成页面标题,它工作得很好。将您的标签按正常方式放入母版页:

    <%= Html.Encode(ViewData["Title"]) %>
    

    然后子类 ActionFilterAttribute 超驰 OnActionExecuting . 从那里您可以访问控制器上下文,并可以将视图数据设置为您想要的任何内容。

    public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.Controller.ViewData["title"] = "whatever";
        }
    

    最后一步是将要使用过滤器上下文的控制器的属性放入。如果要将属性添加到所有类,则可以从基控制器继承。如果要传递参数,还存在重载。在我的应用程序中。我实际上传递了页面标题。

    希望有帮助。