2008-12-11 48 views
0

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

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

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

回答

2

我为生成页面标题做了类似的工作,效果很好。把你的标签在你的母版为正常:

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

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

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

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

希望有所帮助。

+0

非常感谢凯尔。 最起码的一件事:我不确定你的意思,“如果你想传递参数,还有重载”。 – 2008-12-12 15:32:46