首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC新闻文章替代语言版本

ASP.NET MVC新闻文章替代语言版本
EN

Stack Overflow用户
提问于 2012-07-30 20:24:49
回答 1查看 269关注 0票数 0

我需要在ASP.NET MVC项目中添加单个文章的替代语言版本。我目前有一个名为NewsArticle的数据库表,其中包含字段ArticleId、Abstract、Headline、BodyText和ImageUrl。当我创作一篇新闻文章时,我希望本质上有一个选项,为作者提供一个字段来输入文章的另一个语言版本。然后,可以通过网站的语言切换控制将该替代内容显示在该特定语言的新闻文章视图上。

在重新设计现有模型以包括此需求方面,有人能为我指出正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-23 19:36:19

通过为每个多语言对象创建两个表,即将NewsArticle拆分为两个表NewsArticleText (具有本地化内容,每种语言一个记录,外加该语言的ISO代码)和NewsArticle (具有与语言无关的数据;ArticleId、ImageUrl等),设法解决了这一问题。第三个表Languages是使用所有使用的语言创建的,其ISO代码作为主键。

示例:

代码语言:javascript
复制
Table "NewsArticle"
-------------------
ArticleId                 : uniqueidentifier
<any other language-neutral fields>


Table "NewsArticleText"
-----------------------
ArticleId          : uniqueidentifier (foreign key referencing the NewsArticle)
LanguageCode       : varchar(6)  (e.g. "en-GB", "de-CH", foreign key referencing the Languages table)
Headline           : varchar(100)
BocyText           : varchar(max)
<any other localized data>

Table "Languages"
-----------------
LanguageId         : uniqueidentifier
LangaugeCode       : varchar(6)
Name               : varchar(20)

查询db将基于language参数,例如,以下代码返回所有英语文章:

代码语言:javascript
复制
// get all English language articles 
var news = from na in datacontext.NewsArticles
    where na.Deleted == false
    join nt in datacontext.NewsArticlesText 
        on na.ArticleId equals nt.ArticleId
    where nt.LanguageCode == "en-GB"
    select new NewsArticleItem
    {
       ArticleId = na.ArticleId,
       ImageUrl = na.ImageUrl,
       Headline = nt.Headline,
       Abstract = nt.Abstract,
       BodyText = nt.BodyText,
       LanguageCode = nt.LanguageCode,
       DateCreated = na.DateCreated
    };
return news.ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11721520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档