【问题标题】:Dynamic RouteConfig in asp.net MVC 4asp.net MVC 4中的动态RouteConfig
【发布时间】:2012-12-31 11:49:25
【问题描述】:

我知道我可以在 MVC 应用程序的 RouteConfig 中更改路由:

routes.MapRoute(name: "epage", url: "view/SpecificURL", defaults: new {
    controller = "ePage",
    action = "Index"
})

但我想知道如何重定向来自数据库的值。我的数据库中有一行有标题。因此,对于来自数据库的每个标题,我想重定向到特定的 url 例如。

db 中的标题可能是 "pink" 我希望将 www.mydomain.com/pink 重新路由到特定的 url 。我希望它重定向到的 URL 也在数据库中。我查看了很多关于此的问题,似乎找不到任何动态更改 url 路由的问题

【问题讨论】:

  • 为什么需要将其重定向到特定的 URL?您不能在数据库中查找“粉红色”并让它返回适当的内容吗?
  • 我知道这不是同一个问题,但您似乎正在寻找相同的东西:stackoverflow.com/questions/13971468/… 您想要做的是创建自己的路由处理程序。

标签: c# asp.net-mvc routing


【解决方案1】:

您可以这样设置路线:

routes.MapRoute(name: "Default",
    url: "{id}",
    defaults: new { controller = "Home", action = "Index" });

然后在你的控制器中(在我的例子中是 HomeController):

public ActionResult Index(string id)
{
    ContentResult cr = new ContentResult();
    // Do a DB lookup here to get the data you need from the database to generate the appropriate content.
    cr.Content = id;
    return cr;
}

此示例仅返回已发送的字符串。所以现在如果我浏览到http://localhost/mysite/pink,我会得到“粉红色”作为我的结果。您可以轻松地使用此方法查找自定义数据库以确定要返回的正确内容。

如果您现有的路线不允许您采用这条路线 :),那么您始终可以在 RegisterRoutes 方法中执行 SQL 查询并从中填充路由表。

【讨论】:

  • url: "{id}" 的问题是它会忽略我所有的其他控制器
  • 其中一些取决于您如何设置路线。我列出了路由加上routes.MapRoute( name: "Base", url: "{controller}/{action}");,如果我只输入一个参数,它会返回字符串,但是如果我输入一个控制器和动作,我会得到那个路由。
猜你喜欢
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2016-03-08
  • 2015-12-10
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
相关资源
最近更新 更多