MVC 3为多文化站点构建动态元关键字元描述功能

时间:2011-02-10 07:09:52

标签: asp.net-mvc asp.net-mvc-3 uiculture

我需要创建数据库驱动的元关键字/描述。我会将这些记录存储在数据库中,我假设是xml格式;因为这将是每种文化。

我将如何做到这一点?

任何反馈,建议,帮助,非常感谢。 感谢

4 个答案:

答案 0 :(得分:5)

您需要更改的只是调用返回keywork / description

的方法

您可以使用Thread.CurrentThread.CurrentUICulture来确定用户文化。

您需要在web.config处更改以自动更改文化。

例: (Web.Config中)

<globalization uiCulture="auto" culture="auto" />

(控制器)

ViewBag.Description = GetDescription(pageId, Thread.CurrentThread.CurrentUICulture.Name)

(查看)

<meta name="description" content="@ViewBag.Description ">

答案 1 :(得分:4)

为所有模型对象创建父接口。你可以:

public interface IBaseMasterViewDto
{
    int PageId { get; set; }
    string Title { get; set; }
    string MetaKeywords { get; set; }
    string MetaDescription { get; set; }
}

因此,在您的主视图中,您可以使用

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<IBaseMasterViewDto>" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

  <head>
    <title><%: Model.Title %></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="keywords" content="<%: Model.MetaKeywords %>" />
    <meta name="description" content="<%: Model.MetaDescription %>" />

希望它有所帮助。

答案 2 :(得分:1)

1 - 在控制器中获取关键字/描述(来自您的型号)
2 - 将它们分配给Viewbag属性 3 - 在布局(或视图)中显示viewbag属性

OR

为您的模型分配关键字/描述,并将其作为控制器中的参数提供给您的视图。

关于文化:
您只需将其作为参数放在方法控制器中(并在您的路线中) 之后,您必须将此参数提供给检索关键字/说明的方法。

答案 3 :(得分:1)

沙恩,

我在这里回答了一个类似的问题。我没有涵盖文化元素,但上面的fujiy的答案在某种程度上也是如此。此外,alexl的界面是松散类型的viewdata元素的FAR更好的解决方案(根据我在类似问题中的答案)。无论如何,这是我当天回答的问题&#39;对于那个问题:

MVC and Meta Tags for Search Engine Optimization