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

时间:2008-12-11 19:48:25

标签: html asp.net-mvc

这是一个想法:

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

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

1 个答案:

答案 0 :(得分:2)

我为生成页面标题做了类似的事情,但效果很好。像往常一样将标记放在主页中:

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

然后继承ActionFilterAttribute并覆盖OnActionExecuting。从那里,您可以访问控制器上下文,并可以将您的viewdata设置为您想要的任何内容。

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

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

希望有所帮助。