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

   2023-02-08 学习力0
核心提示:   前不久看到了“.NET 4的新特性:图表、SEO及可扩展的输出缓存”这篇新闻,才知道现在.NET4.0里面已经有SEO了。提到SEO,这让我想起去年做过的一个ASP.NET MVC项目中遇到的SEO处理方面的问题(如果不了解SEO,请点击这里、)。问题我在"如何让你的网站收

 

  前不久看到了“.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技术门户”,就是这种形式。

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 使用WebClient自动填写并提交ASP.NET页面表单的源代码
    使用WebClient自动填写并提交ASP.NET页面表单的
    转自:http://www.cnblogs.com/anjou/archive/2007/03/07/667253.html 在.NET中通过程序填写和提交表单还是比较简单。比如,要提交一个如下图所示的登录表单:           填写和提交以上表单的代码如下:       // 要提交表单的URI字符串
    02-09
  • asp.net mvc多条件+分页查询解决方案
    


            
asp.net mvc多条件+分页查询解决方案
    asp.net mvc多条件+分页查询解决方案
    http://www.cnblogs.com/nickppa/p/3232535.html开发环境vs2010css:bootstrapjs:jquery    bootstrap paginator原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了MVC多条件+分页查询因为美工不是很好,所以用的是
    02-09
  • ASP.NET操作Cookies的问题(Bug or Not)
    以下存和取都是在不同的页面中,如果是在同一个页面也没必要用cookies了。 Test1: 给Cookies赋值: const string AAA="aaa"; Response.Cookies[AAA].Value = "111;222;333"; 取值: string value = Request.Cookies[AAA].Value; // value为111 Test2: 给Cooki
    02-09
  • Asp.Net Core 自定义验证属性
      很多时候,在模型上的验证需要自己定义一些特定于我们需求的验证属性。所以这一篇我们就来介绍一下怎么自定义验证属性。  我们来实现一个验证邮箱域名的自定义验证属性,当然,最重要的是需要定义一个继承自ValidationAttribute的类,然后在实现其IsVal
    02-09
  • Asp.Net 之 枚举类型的下拉列表绑定
    有这样一个学科枚举类型:/// 学科 /// /summary public enum Subject {None = 0,[Description("语文")]Chinese = 1,[Description("数学")]Mathematics = 2,[Description("英语")]English = 3,[Description("政治")]Politics = 4,[Description("物理&qu
    02-09
  • [ASP.NET笔记] 1.Web基础知识
         1:http协议:     2:web服务器:     3:静态网页的概念     4:动态网页的概念       http协议:http(hypertext transfer protocol) 即超文本传输协议,这个协议是在internet上进行信息传送的协议任何网页之间要相互沟通,必须要尊循
    02-09
  • ASP.NET邮件发送 .net 发送邮件
      今天做了个ASP.NET做发送邮件功能,发现QQ邮箱好奇怪,当你用QQ邮箱做服务器的时候什么邮件都发送不出去(QQ邮箱除外)。而且爆出这样的错误:"邮箱不可用。 服务器响应为: Error: content rejected.http://mail.qq.com/zh_CN/help/content/rejectedmail.ht
    02-09
  • 由ASP.NET Core根据路径下载文件异常引发的探究
    前言    最近在开发新的项目,使用的是ASP.NET Core6.0版本的框架。由于项目中存在文件下载功能,没有使用类似MinIO或OSS之类的分布式文件系统,而是下载本地文件,也就是根据本地文件路径进行下载。这其中遇到了一个问题,是关于如何提供文件路径的,通
    02-09
  • ASP.NET的运行原理与运行机制 ASP.NET的开发模式包括
    ASP.NET的运行原理与运行机制 ASP.NET的开发模
    在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用WebForms这种模仿Windows Form编程方式有了很大不同,不再有大量控件和控件生成的大量不够灵活的代码
    02-09
  • ASP.NET 后台接收前台POST过来的json数据方法
     ASP.NET前后台交互之JSON数据 https://www.cnblogs.com/ensleep/p/3319756.html
    02-09
点击排行