2016-09-08 13 views
-1

私は記事の束を表示するウェブサイトを作っています。それはMVCから構築されています。私は記事を一日に検索し、次にURLを介してID番号で検索できるようにしたいと考えています。URL MVCでのルーティング

ドメイン名がwebsite.comの場合、website.com/yyyymmddが特定のコントローラ+方法をヒットし、その日とwebsite.com/のすべての記事を表示するようにルートを作成する方法を理解しようとしていますyyyymmdd/111は、記事#111のその日の記事を検索します。

私が抱えている問題は、MVC内でルーティングするためのすべてのチュートリアルでは、URLにコントローラとメソッドを指定すると仮定しているということです。誰もが自動的に「website.com/yyyymmdd/111」指定されたコントローラとメソッドを使用し、それは素晴らしいことだ作るための方法を提案することができれば

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapRoute(
      "Default", 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = "" }); 
    } 

:彼らのようなものを示しています。前もって感謝します!

EDIT:

public ActionResult ArticlesByDate(string date, int id) 
    { 
     if(id > 1) 
     { 
      return View(Contact()); 
     } 
     else 
     { 
      return View(About()); 
     } 

    } 

は、私はあなたの男の提案を理解しています願っていますが、これは私を与えている:私は私のルートとしてこれをやったし、私の方法がある

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapRoute(
      "Today", 
      "{date}/{id}", 
      new { controller = "Articles", action = "Index", date = DateTime.Today.ToString("yyyyMMdd"), id = UrlParameter.Optional }); 
    } 

次のように「http://localhost:52159/20160908/2

+3

基本検索https://www.bing.com/search?q=asp.net+mvc+routing+specify+controllerがあなたを与えている必要がありますまともなチュートリアル...またはSOの投稿http://stackoverflow.com/questions/15854483/use-mvc-routing-to-override-controller-name-when-presented-with-specific-action –

+0

model-view-controllerタグは、パターンに関する質問用です。 ASP.NET-MVCの実装には特定のタグがあります。 –

答えて

0

これは、アクションのパラメータとして日付を使用することで解決できますが、「リソースが見つかりません」というエラーが表示されます。

あなたの行動は、その後、あなたはそこからそれを取ることができ

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapRoute(
      "Default", 
      "{controller}/{action}/{articleDate}/{id}", 
      new { controller = "Home", action = "Index",articleDate=DateTime.Today.ToString("yyyyMMdd"), id = "" }); 
} 

のようなあなたのルート定義は次のようになり

public ActionResult Index(string articleDate,string id) ... 

ようになりますデフォルトのMVCルーティングメカニズムについて

1

第2の経路。

最初のルートはarticles.Controllerとactionの値は静的です。あなたは、アクションで2つのビューをリダイレクトカントwebsite.com/20160912/112など

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapRoute(
      name: "Articles", 
      url: "{date}/{id}", 
      defaults: new { controller = "Articles", action = "Info"}); 

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

    public class ArticleController : Controller { 

     public ActionResult Info(string date, int id){ 

      return View(); 

     } 
    } 

を、website.com/20160911/111の日付とIDの値を変更することができます。 1つのビューと部分的なビューを使用します。例えば

Info.cshtml

@if(id > 1) 
    { 
     @Html.Partial("_Contact") 
    } 
    else 
    { 
     @Html.Partial("_About") 
    } 
+0

あなたは明らかに日付の経路制約がありません(一度間違ってしまうとデフォルトに戻ります)が、OPが探しているのは正確です。 –

+0

私は理解していません:(私はそれをルーティングすることを除いて記事コントローラ情報アクション@AlexeiLevenkov –

+0

@SercanTimoçin私はあなたが必要とするものであるように思えますが、私は別の問題に直面しています。私の進歩をOPに入れている。 –

関連する問題