我正在asp.net网站上实施“新闻”部分。在一个页面上有一个简短版本的文章列表,当您单击其中一个链接时,它会将您重定向到包含完整文章的页面。问题是第二页上的文章文本将来自数据库,但文章可能会有所不同 - 有些可能有链接,有些可能有图像或一组图像,可能有不同的格式等。我的朋友有明显的解决方案想出来的是将文章保存在数据库中作为html,包括所有链接,图像,格式等。然后它将简单地显示在第二页上。我觉得这不是一个好的解决方案,好像,例如,我们决定在这个html中改变一些div的css类(假设它在所有文章中使用),我们将不得不找到它并在每一条记录中进行更改我们数据库中的文章表。但另一方面,我们不知道如何以不同的方式做到这一点。我的问题是:你通常如何处理这样的事情?
答案 0 :(得分:1)
我个人不喜欢在数据库中存储完整的html的想法。这是尝试解决问题。
不要寻找可能无限数量的布局。是的,所有文章可能都不同,但如果你坚持一些好的布局,那么你将为自己节省很多麻烦。这些布局可以存储为模板,例如ArticleWithImagesAtTheBottom,ArticleWithImagesOnLeft等
这样,您可以轻松更改模板,从而减少您的头痛。我想你也可以争辩说网站在布局上有一定的一致性。
然后,对于存储,您至少有两个选项:
使用每个模型的方法,并使用例如ArticleWithImagesAtTheBottomModel,它具有1stparagraph,2ndparagraph,MainImage,ExtraImages
根据您要使用的模板解析文章。例如,如果需要,可以查找段落。
始终将图像分开并在数据库中的另一列/表中引用它们。这给了你最大的自由。
顺便说一句,选项#2会慢一些,因为你每次都必须动态解析。我喜欢每次观看模型的方法。
基本上我想我想说要小心让事情变得复杂。无限数量的布局意味着无数的潜在问题。如果你真的想要扩展,你可以随时添加更多的模板,但你可能最好从3或4个布局开始。
从这一点开始编辑: 实际上,考虑到这一点可能不是最好的解决方案。它可以根据您的需要工作,但我想知道大型网站是如何做到的。如果你真的需要那么大的灵活性,你可以(我认为有点建议)使用自定义标记。甚至可能是简化或完整的wiki标记。我仍然倾向于使用模板,但如果你需要至少插入链接和图像,那么你可以解析它们。
答案 1 :(得分:0)
当然,存储HTML的逻辑上放置< div> s是你不必经过你存储的每一个HTML来改变样式吗?
我假设您没有在存储的HTML中使用内联样式,并且正在引用外部CSS文件,对吧?
答案 2 :(得分:0)
您对同事提案的异议并未说明使用数据库的任何内容。一个DB而不是什么:文件?那就完全一样了。您想要使用HTML,您必须在“每条记录”上执行此操作。这并不比“在每个文件上都难”。全局变化是一个婊子,除非你通过引用外部CSS来计划它。但是,如果您要获得数百万篇新闻文章,那么您最好还计划对CSS进行版本控制。
无论如何,CMSes会做你想做的事情。使用DB是一个很好的方法。如何使用它取决于更密切地了解问题。
答案 3 :(得分:-2)
您是否考虑过使用免费内容管理系统?我能想到一些好的:
查看此Wiki文章:http://en.wikipedia.org/wiki/List_of_content_management_systems