我正在启动现有的ASP.NET Web的端口,将CMS cms启动到ASP.NET MVC,并希望从一开始就获得路由。

注意:拥有完全相同的URL结构并不重要。

我认为 这个答案 接近我想要的东西,但如果有人拥有,希望有一些其他输入。

当前的URL冲突就像:


?content = corporate/about_us/概述

等等

我想添加可选的语言paramater,并在MVC中保留类似的结构。所以类似:

News/CurrentNews/this-is-a-News-Article
en/news/currentnews/this-is-a news-article

编辑/新闻/CurrentNews/this-is-a-a-News-Article
编辑/en/news/currentnews/this-is-a news-article

还是我的反向更好?

News/CurrentNews/this-is-a-a-news-article/编辑
en/news/currentnews/this-is-a news-article/edit

我认为这种方式(最终采取了行动)将我读过的其他问题的每种情况都重新考虑。

另一点是现有的URL是为SEO和面包屑一代所做的。即URL显示当前的导航路径。

我可以在URL中显示当前页面,然后分离数据库构建面包屑。

像:

en/this-iS-a新网络

与面包屑

首页>新闻>当前新闻>这是一篇新闻文章

整体思想和解决方案?我应该从自定义路由类开始以最大程度的灵活性吗?

有帮助吗?

解决方案

您必须确保不会意外重叠某些路由规则。例如,说您将语言视为第一个标签,请确保没有任何新闻类别具有“ en”的名称。我知道这是一个愚蠢的例子,但我认为您明白了。确保最后放置最不准确的路由规则。

我个人会这样构建它:

[language]/[category]/[subcategory]/[itemtitle]/[itemid]

为什么您可能会问[itemID]?如果您有一个较大的网站,则可能会有2篇新闻文章具有完全相同的名字。您的代码可能“恰好是”而仅显示出第一个新闻元素,但也可能没有。 ID始终是独一无二的,用SEO术语添加ID,确实无关紧要(至少根据我的经验)。

您可以添加一条路由[语言]被排除在外,而是提供默认值。

另外,斯科特·古斯里(Scott Guthrie)写了一本好 Blogpost 在此之前,这绝对值得一读,我认为这对于MVC 3仍然有效。它可能只会给您一些想法!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top