2016-08-16 19 views
0

Redditのリンクは次のように、通常は以下のとおりです。subredditは、ユーザーがそれを作成した方法に応じて何もすることができ、つまりASP.NET MVCでの "サブレディット"スタイルのURLルーティング?

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

。通常、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 
    } 
} 

さらに属性ルーティングは、次にあなたがhttp://localhost:PORT/r/reddit/topicによってExampleControllerTopic - アクションを呼び出すことができます

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 } 
     ); 
    } 
} 

ようroutes.MapMvcAttributeRoutes();RouteConfig.csにactivtedする必要があります。

+0

これは、グローバルな宣言型ルーティングでも同様に機能します。ローカル/コントローラ/アクション/サブネーム/トピック名のルート設定。 – bzlm

+0

oooooooo wow larightありがとう –

+0

例に基づいてURLにアクセスするにはどうすればよいですか? –

関連する問題