asp.net mvc routing with optional starting参数
我开始将现有的ASP.NET Web Forms CMS移植到ASP.NET MVC,并希望从一开始就获得路由权。asp.net mvc routing with optional starting参数
注意:具有完全相同的URL结构并不重要。
我认为this answer已经接近我正在寻找的东西,但想要一些额外的输入应该有人拥有它。
当前的URL结构调查是这样的:??
内容=新闻/ CurrentNews/This_is_a_news_article
内容=公司/ About_Us /概述
等等等等
我想添加一个可选的语言参数并在MVC中保留一个类似的结构。因此,像:
新闻/ CurrentNews /这 - 是 - 一 - 新闻文章
EN /新闻/ CurrentNews /这 - 是 - 一 - 新闻文章编辑/新闻/ CurrentNews /这 - 是 - 一 - 新闻文章
编辑/ EN /新闻/ CurrentNews /这 - 是 - 一 - 新闻文章
还是我更好地与反向?
新闻/ CurrentNews /这 - 是 - 一 - 新闻 - 文/编辑
EN /新闻/ CurrentNews /这 - 是 - 一 - 新闻 - 文/编辑
我觉得这种方式(在最后采取行动)为我读过的其他问题的每一个场景寻找路线。
另一点是,现有的URLs就像SEO和面包屑生成那样完成。即URL显示当前的导航路径。
我只能在URL中显示当前页面,并从数据库分离地构建面包屑。
像:
EN /这 - 是 - 一 - 新闻文章
与面包屑
首页>新闻中心>最新新闻>这是一个新闻文章
整体想法和解决方案?我应该从一个自定义路由类开始,以获得最大的灵活性吗?
您必须确保某些路由规则不会意外重叠。例如,假设您将语言作为第一个标签,请确保不会有名称为“en”的新闻类别。我知道这是一个愚蠢的例子,但我认为你会得到这张照片。确保你把最不准确的路由规则放在最后。
我个人构建这样的:
[language]/[category]/[subcategory]/[itemtitle]/[itemid]
为什么[的itemId]你可能会问?如果你有一个更大的网站,可能会发生这样的情况,即你有两篇新闻文章的名字完全相同。你的代码可能“恰好”写成只显示返回的第一个newsitem,但它可能不是。一个ID总是唯一的,在SEO方面,添加ID实际上并不重要(至少在我的经验中)。
您可以添加一个路线,其中省略了[语言],而是提供默认值。
此外,Scott Guthrie在前一段写了一个不错的blogpost,这绝对值得一读,我认为它仍然适用于MVC 3.它可能只是给你一些想法!
感谢您的见解。最后的itemid肯定是有效的和重要的。 – 2010-09-07 01:35:29