2016-08-16 25 views
0

reddit的鏈接通常是這樣的:ASP.NET MVC中的「Subreddit」風格的URL路由?

https://www.reddit.com/r/<subreddit>/<topic>

這意味着,該版(Subreddit)可以根據用戶如何創建它是什麼。

平時對ASP MVC,我們可以做這樣的:

local/controller/action?subreddit=subname&topic=topicname

但如果我希望它是這樣的:

local/controller/action/subname/topicname

+2

爲其創建路線定義。 –

回答

4

此功能的關鍵字屬性在ASP.NET MVC路由。在博客中有很多信息可用。

通過Route -Annotation,您可以修飾您的動作併爲動作調用定義URL部件和參數之間的映射。

public class ExampleController : Controller 
{ 
    [Route("r/{subreddit}/{topic}")] 
    public ActionResult Topic(string subreddit, string topic) 
    { 
     //Logic goes here 
    } 
} 

而且屬性路由已在RouteConfig.cs將activted與routes.MapMvcAttributeRoutes();

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapMvcAttributeRoutes(); 

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

然後你就可以http://localhost:PORT/r/reddit/topic調用ExampleControllerTopic清議。

+0

這對於全局聲明性路由(例如, 「local/controller/action/subname/topicname」的路由設置。 – bzlm

+0

oooooooo哇啦,謝謝 –

+0

如何從您的示例訪問基於URL的URL? –