ASP.NET MVC使用动态产生meta

在ASP.NET中,我们是很容易动态为header节点添加meta信息。
动态修改网页Header属性,Title,Meta标签等http://www.cnblogs.com/insus/archive/2011/03/21/1990274.html

Insus Meta Utility V2http://www.cnblogs.com/insus/archive/2011/04/21/2023258.html

那在ASP.NET MVC中,怎样能动态为header添加meta呢?为了解决问题,建议先看这篇《ASP.NET MVC使用RenderSection渲染节点http://www.cnblogs.com/insus/p/3654300.html 。

看完之后,你自然会明白,Insus.NET是使用RenderSection来实现:

在_layout.cshtml的header节点内,定义一个section标记:

创建一个控制器:


在视图中,就可以写呈现的代码了,不管是手写,还是从数据库获取meta数据:


运行浏览时,右键view source:



嘿嘿,问题又来了,如果视图是没有_layout.cshtml,它是单独一页,我们想动态添加或是添加meta那又怎么办:
再创建一个视图测试测试:



你会直接按照上面的方法来修改:



当你信心足足运行它时,它既然出错了:
The file "~/Views/xxxx.cshtml" cannot be requested directly because it calls the "IsSectionDefined" method.



因为RenderSection是继承母版页的,单独一个视图不能这样解决,那要怎样处理?
修改一下吧:



使用viewBag来解决。视图经这样一改,得在控制器的Action实现相关代码:

 

看看源代码:

 

posted @ 2015-01-08 10:30  Insus.NET  阅读(1643)  评论(0编辑  收藏  举报