【发布时间】:2011-01-28 13:46:58
【问题描述】:
我正在开发带有 MVC 3 前端的 CMS/Webshop 引擎。我希望能够为动态内容/产品运行时定义 url“别名”,并且我希望能够将此 URL 路由到 MVC 控制器操作。
例如我希望能够定义
~/Products/Motherboards/{manufacturer}/{uniqueName}
~/HugeSavings/{uniqueName}
~/Products/{uniqueName} 等。
映射到 ProductsController 中相同的 Display(string uniqueName) 控制器操作。这些 url 模式是动态的,即使它们的顺序或组合规则在设计时未定义,模式的规则或模式的内容可以在运行时更改而无需重新启动应用程序,它们存储在 SQL 中,但是需要缓存。每个模式都有一个目标,它可能是一个典型的 MVC url,比如
产品/展示/{uniqueName}
或类似的直接链接
`http://somestuff.com/stuff.aspx?name={uniqueName}。
我发现的每个解决方案都使用过
RegisteredRoutes.Clear();
RebuildRoutes();
这太可怕了,因为要为一种产品(或产品类别)添加一种新模式,我必须在数据库中查询数千种产品及其对应的模式。
那么,我可以在不清除或重新启动应用程序的情况下更改路线吗?我可以“注入”一些逻辑到路由而不必重新编码整个“查找控制器和操作并解析参数”的东西吗?
【问题讨论】:
标签: asp.net-mvc routing asp.net-mvc-3 asp.net-mvc-routing