• ASP.NET MVC 使用总结(二)——扩展HtmlHelper实现动态生成title及meta


      前不久看到了“.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实现,方法如下:

    代码
    /// <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技术门户”,就是这种形式。

  • 相关阅读:
    Android实战技巧之三十八:Handler使用中可能引发的内存泄漏
    android上FragmentTabHost实现自己定义Tab Indicator
    GSO/TSO/GRO等对VirtIO虚机的网络性能影响分析(by quqi99)
    经典开源作品
    @在php中的作用
    .net开发中常用的第三方组件
    如何正确并完全安装Visual Studio 2015企业版本?
    TinyPNG---一个压缩PNG的神站
    asp.net MD5 加密
    PHP判断访问者手机移动端还是PC端的函数,亲测好用
  • 原文地址:https://www.cnblogs.com/xuezhizhang/p/1680872.html
Copyright © 2020-2023  润新知