2013-01-17 62 views
2

我知道我可以更改RouteConfig路由在我的MVC應用程序:動態RouteConfig在asp.net MVC 4

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

但我想知道如何從一個分貝值正在添加重定向。在我的數據庫中有一行有標題。因此,對於從數據庫來的每個標題,我想重定向到特定的網址 前。

db中的標題可能是"pink"我想要www.mydomain.com/pink被重新路由到一個特定的URL。我希望它重定向到的URL也在數據庫中。我看了很多關於這個問題,似乎無法找到任何動態改變的URL路由

+0

爲什麼你需要將它重定向到一個特定的URL?難道你不能在你的數據庫中查找「粉紅色」,並讓它簡單地返回適當的內容嗎? –

+0

我知道這不是同一個問題,但它看起來像你正在尋找同樣的事情:http://stackoverflow.com/questions/13971468/depth-first-nested-routing-in-an-asp-net-網站/ 13980352你想要做的是創建你自己的路由處理程序。 – cheesemacfly

回答

0

您可以設置這樣的路線:

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查詢並從中填充路由表。

+0

URL的問題:「{id}」,是否會忽略所有其他控制器 –

+0

其中一些取決於您如何設置路由。我列出的路線加 'routes.MapRoute( name:「Base」, url:「{controller}/{action}」);'如果我只放入一個參數,它會返回字符串,但如果我把控制器和行動,我得到的路線。 –