asp.net MVC3根据页面内容自动生成元关键字和描述

时间:2011-04-11 19:39:31

标签: asp.net asp.net-mvc-3 seo razor

我正在使用剃刀视图引擎处理MVC3 Web应用程序。我正在寻找一种在我的网页上自动生成元关键字和描述的解决方案。

我已经在stackoverflow上找到了this解决方案,这个想法很好看。但由于我打算在我的网站上发布博客等...我希望根据页面内容自动生成元关键字和描述。

到目前为止,我已经考虑到了以下几点。假设当前的HTML如下所示;

   <html>
    <head>
    </head>
        <body>
            <header></header>
            <div id="container">
                <div id="sideBar"></div>
                <div id="pageHeader"></div>
                <div id="content">
                    <!--This part contains the dynamic content-->
                </div>
                <div class="clear"></div>
            </div>
            <footer></footer>
        </body>
    </html>

我想要的情况如下所示;

   <html>
    <head>
        @Html.MetaKeywords()
        @Html.MetaDescription()
    </head>
        <body>
            <header></header>
            <div id="container">
                <div id="sideBar"></div>
                <div id="pageHeader"></div>
                <div id="content">
                    <!--This part contains the dynamic content-->
                </div>
                <div class="clear"></div>
            </div>
            <footer></footer>
        </body>
    </html>

说这一切我还有以下问题没有得到答复,希望有人可以提供帮助。

  1. 上述情况,使用HTML帮助程序。这是一种良好的逻辑方法,可以根据内容在每个页面上生成关键字和描述吗?
  2. 如果是这样,有没有人有经验,也许是一个好榜样?
  3. 如果没有,还有其他好的选择吗?然后在每个控制器动作上使用属性?这仍然是一个选项,但它不会根据我的页面内容生成关键字描述。
  4. 我希望有人可以帮助我。谢谢!

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望能够根据内容div中的文本自动生成元数据吗?

我会尝试将text / html / model传递给MetaKeywords和MetaDescription函数,并允许它们解析/分析/查找您需要放入元数据中的信息。

   <html>
    <head>
        @Html.MetaKeywords(Model.ContentText)
        @Html.MetaDescription(Model.ContentText)
    </head>
        <body>
            <header></header>
            <div id="container">
                <div id="sideBar"></div>
                <div id="pageHeader"></div>
                <div id="content">
                    <!--This part contains the dynamic content-->
                </div>
                <div class="clear"></div>
            </div>
            <footer></footer>
        </body>
    </html>

答案 1 :(得分:1)

您应该了解生成页面内容是动作处理的最后阶段,它直接执行HttpContextBase.Response,并且通常服务器可能永远不会缓存整个内容,它可能会因生成而发送到客户端。

您可以按照此处http://weblogs.asp.net/gunnarpeipman/archive/2010/08/15/asp-net-mvc-3-global-action-filters.aspx所述全局注册过滤器,这样您就不需要为每个操作方法添加属性。

答案 2 :(得分:0)

在_layout.cshtml上你可以添加@Rendersection(“header”,false)在标题部分!!暂时是假的。 稍后您必须将其更改为true或删除所需的属性。

在每个页面上,您现在可以使用

@section header{
<meta name="Author" content="1SeoAdvies.nl" />;

Here you add every desired meta tag.

}

请注意,_layout页面的标题部分没有元标记。