ASP.NET MVC 使用总结(二)——扩展HtmlHelper实现动态生成title及meta
2010-03-08 16:01
1051 查看
前不久看到了“.NET 4的新特性:图表、SEO及可扩展的输出缓存”这篇新闻,才知道现在.NET4.0里面已经有SEO了。提到SEO,这让我想起去年做过的一个ASP.NET MVC项目中遇到的SEO处理方面的问题(如果不了解SEO,请点击这里>>、>>)。问题我在"如何让你的网站收录到百度、谷歌"这篇文章中已经提到过了。由于我们之前未做SEO方面的处理,在收到客户的网站分析报告之后,才着手解决这方面的问题。
SEO处理需要注意的问题比较多,本文第一段最后一个链接中提到的方法属于几种常见的处理方法。SEO相关的参考数据都可以使用站长工具查询。你可以查看Google 内部 SEO 评估报告,让谷歌告诉你怎么改善网站的SEO。
本文介绍一种在ASP.NET MVC项目中实现动态加载页面title及meta信息(keywords、description)的方法,属于SEO中基本的问题。
通过扩展ASP.NET MVC中的HtmlHelper实现,方法如下:
代码
该方法的思路是以页面URL中的ControlName和ActionName为条件,从数据库中查找对应的页面标题、关键字、描述信息,然后加到页面中(前提是有对应的表,在后台管理页面信息)。GetMetaAndTitleOfPage方法这里就不列出了。
使用方法是将如下代码加到页面的<head>标签里:
<%string prams = Request.Url.ToString();%>
<%string titleValue = ""; %>
<%=Html.MetaTags(prams.Split('/')[3].Split('?')[0], prams.Split('/').Length > 4 ? prams.Split('/')[4].Split('?')[0] : "" ,ref titleValue) %>
<%string tBegin = "<title>";%>
<%string tEnd = "</title>";%>
<%=tBegin%>
<%if (string.IsNullOrEmpty(titleValue))%>
<%{ %>
XX-XX-XX
<%} %>
<%else%>
<%{%>
<%=titleValue%>
<%}%>
<%=tEnd %>
XX-XX-XX是数据库中没添加该页面对应的信息时,默认显示的标题,你可以根据需要修改。
标题以“-”分隔属于一种比较好的方法,例如:客园.NET频道首页的标题是“博客园.NET频道 - 最专业的.NET技术门户”,就是这种形式。
SEO处理需要注意的问题比较多,本文第一段最后一个链接中提到的方法属于几种常见的处理方法。SEO相关的参考数据都可以使用站长工具查询。你可以查看Google 内部 SEO 评估报告,让谷歌告诉你怎么改善网站的SEO。
本文介绍一种在ASP.NET MVC项目中实现动态加载页面title及meta信息(keywords、description)的方法,属于SEO中基本的问题。
通过扩展ASP.NET MVC中的HtmlHelper实现,方法如下:
代码
/// <summary> /// 内容摘要: 动态生成页面keywords、description的"meta"标签 /// </summary> /// <param name="helper">默认参数</param> /// <param name="strControlName">Controller名</param> /// <param name="strActionName">Action名</param> /// <param name="pageTitleValue">页面标题字符串</param> /// <returns>返回keywords、description的"meta"标签</returns> public static string MetaTags(this HtmlHelper helper, string strControlName, string strActionName, ref string pageTitleValue) { UserService serviceObj = new UserService(); string[] pageDatasStrArr= new string[]{"","",""}; pageDatasStrArr= serviceObj.GetMetaAndTitleOfPage(strControlName, strActionName);//获取数据 pageTitleValue=pageDatasStrArr[2];//页面标题 //返回meta标签 return string.Format("<meta name=\"description\" content=\"{0}\"/><meta name=\"keywords\" content=\"{1}\" /> ", pageDatasStrArr[0],pageDatasStrArr[1]); }
该方法的思路是以页面URL中的ControlName和ActionName为条件,从数据库中查找对应的页面标题、关键字、描述信息,然后加到页面中(前提是有对应的表,在后台管理页面信息)。GetMetaAndTitleOfPage方法这里就不列出了。
使用方法是将如下代码加到页面的<head>标签里:
<%string prams = Request.Url.ToString();%>
<%string titleValue = ""; %>
<%=Html.MetaTags(prams.Split('/')[3].Split('?')[0], prams.Split('/').Length > 4 ? prams.Split('/')[4].Split('?')[0] : "" ,ref titleValue) %>
<%string tBegin = "<title>";%>
<%string tEnd = "</title>";%>
<%=tBegin%>
<%if (string.IsNullOrEmpty(titleValue))%>
<%{ %>
XX-XX-XX
<%} %>
<%else%>
<%{%>
<%=titleValue%>
<%}%>
<%=tEnd %>
XX-XX-XX是数据库中没添加该页面对应的信息时,默认显示的标题,你可以根据需要修改。
标题以“-”分隔属于一种比较好的方法,例如:客园.NET频道首页的标题是“博客园.NET频道 - 最专业的.NET技术门户”,就是这种形式。
相关文章推荐
- ASP.NET MVC 使用总结(二)——扩展HtmlHelper实现动态生成title及meta
- dhl: 在 ASP.NET MVC 中创建自定义 HtmlHelper 使用扩展方法创建 HTML Helper
- 【asp.net mvc】 扩展 htmlhelper 实现分页
- asp.net mvc 中 htmlhelper 中各生成 html 控件函数的实现(表达式解析)
- (asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用
- ASP.NET MVC HtmlHelper 自定义扩展分页功能
- ASP.NET MVC学习之View动态内容和htmlhelper
- ASP.NET MVC使用动态产生meta
- ASP.Net MVC开发基础学习笔记(2):HtmlHelper与扩展方法
- Asp.Net MVC使用HtmlHelper渲染,并传递FormCollection参数的陷阱
- 使用Asp.net动态生成控件的使用总结
- ASP.NET MVC DropDownList扩展,实现foreach@Html.DropDownListFor(p=>p.Type,p.Type,TypeItem)
- [ASP.NET MVC]为HtmlHelper添加一个RadioButtonList扩展方法
- 我对ASP.NET MVC HtmlHelper中的Form和Link的小扩展
- Asp.net MVC Preview 4 中自定义Jquery的HtmlHelper扩展
- 扩展ASP.NET MVC三层框架并使用StructureMap实现依赖注入1-Model层的实现
- Asp.Net MVC对类HtmlHelper的自定义扩展方法以及如何调用
- Asp.Net MVC使用HtmlHelper渲染,并传递FormCollection参数的陷阱(转)
- ASP.Net MVC开发基础学习笔记(2):HtmlHelper与扩展方法
- ASP.NET MVC DropDownList扩展,实现foreach@Html.DropDownListFor(p=>p.Type,p.Type,TypeItem)