首页 > 代码库 > ASP.NET MVC使用动态产生meta

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 V2》http://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实现相关代码:
技术分享

 

看看源代码:
技术分享

 

ASP.NET MVC使用动态产生meta