2016-12-27 13 views
1
  • 私はASP.NETコアにCMSを持っているとしましょう。
  • ルートURLがtest.netであるとします。
  • 新しいページtest.net/docs/doc1.htmlを管理者として追加したとします。

はできるだけ早く私のデータベースを更新するためのAPI呼び出しが完了すると、私はこのURLとのはContentコントローラを言わせるためにルーティングされ、このURLにナビゲートできるようにしたいです。コントローラ内の新しいルートをコントローラ内から追加しますか?

"catch all"コントローラを正しく設定するには、URLからパスを取得してデータベースからページを取得するコントローラを意味しますか?私の目標は、どのような経路も処理できるようにすることです。固定パスはありません。もしDBに何かの内容があると言われたら1/2/3/4/5.html私はContentコントローラーで処理します。

ただし、MVCはここでも動作する必要があります。だから私はAPIへの私の固定ルートを持っているが、API以外のURLは普通のContentコントローラでキャッチして処理する。

+0

@MickyD 1. ASP.NET Coreのルーティングについては、すべてをお読みください。カスタムルータを構築する。私は静的ルートを作成することができました。アプリを起動した後にルートを追加する方法をIDKで指定します。 – Harry

答えて

1

すべてのコンテンツを1つのフォルダに入れることができますか?コンテンツ?その場合は、コンテンツコントローラ内からCatch All(ワイルドカード)ルートアプローチを使用することができます。

public class Content : Microsoft.AspNetCore.Mvc.Controller 
{ 
    [Route("/Content/{*catchall}")] 
    public IActionResult Index(string catchall) 
    { 
     // catchall = 1/2/3/4/5.html  
     return View(); 
    } 
} 
+0

まさに!私は '[Route(" {* catchall} ")]' 'を使い、別のフォルダは必要ありません。それでもAPIコールは適切に一致します。私はそれらの "魔法の弦"がどこに説明されているか知っていればいいと思う... – Harry

関連する問題