【发布时间】:2016-03-23 13:18:19
【问题描述】:
我正在使用 ASP.Net Core 和 MVC 6 重写我的 FragSwapper.com 网站(目前在 Asp 2.0 中!),我正在尝试做一些我通常必须打破 URL Re-Write 工具的事情使用 db 代码和一些重定向,但我想知道在 ASP.Net Core 中是否有“更好”的方法可以使用 MVC 路由和重定向。
这是我的场景...
-
访问网站的 URL:[root]
做什么: 转到通常的 [Home] 控制器和 [Index] 视图(没有 [ID])。 ...它现在这样做了:
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); -
访问网站的 URL:[root]/ControllerName/...yada yada...
怎么做:去控制器,等等......这一切也都有效。
-
棘手的一点:URL 访问站点:[root]/SomeString
该怎么做: 访问数据库并执行一些逻辑来确定是否找到事件 ID。如果我这样做,我会转到 [Event] Controller 和 [Index] View 以及我找到的任何内容的 [ID]。如果不是,我尝试查找主机 ID 并使用我找到的 [ID] 转到 [Home] Controller 和 [Organization] View。如果我没有找到事件或主机,请转到通常的 [Home] 控制器和 [Index] 视图(没有 [ID])。
这里的大问题是我想重定向到 2 个不同控制器中的三个完全不同的视图之一。
所以底线是当用户来到我网站的根目录并且上面有一个“/Something”并且该逻辑是数据库驱动时,我想做一些逻辑。
如果您理解了这个问题,您现在可以停止阅读……如果您觉得有必要了解为什么需要所有这些逻辑,您可以继续阅读以获得更详细的上下文。
我的网站基本上有两种模式:查看活动和不查看活动 事件!通常一次运行 4 或 5 个事件,但 大多数用户只对一个事件感兴趣,但这是一个不同的事件 每 4 个月左右..我有一个 [Host] 实体,每个 Host 最多支持 一年4场,一次一场。大多数用户只关心一个主机的 事件。
我试图避免让用户总是去事件地图并找到 事件并点击它,因为我有次数限制 显示地图(免费),这真的没有必要。 99.99% 的 当用户在我的网站上时,他们在事件屏幕上,而不是在我的主页上 屏幕,并且一次只对一个事件感兴趣。在里面 未来我想对其进行编码,所以如果他们来到我的网站,他们就会正确 参加他们的活动或他们最喜欢的主持人的新活动,这样我就可以避免 大量的点击并将我的 [Home] 控制器页面集中在新手上......但我 还没有自动登录功能,所以它在后面。
但现在我希望主持人始终拥有相同的活动网址: FragSwapper.com/[Host Abbreviation] ...并且知道它总是会转到 他们的当前事件每 4 个月有一个不同的 ID!!!
疯了...我知道...但从技术上讲很容易做到,我只是不知道 如何在 MVC 中正确执行操作。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-routing asp.net-core asp.net-core-mvc url-redirection