2017-08-12 2 views
0

私はASP.NET Coreとルーティングにはかなり新しく、アドバイスを求めています。昔はCMSやpage.aspxのようなページがありました。sqlデータベースの動的ルート

私の主な質問は、ルートから一意のURL(www.mydomain.com/test-page)を作成する方法、またはサブカテゴリwww.mydomain.com/cat/pageを選択する方法です。

私はそれがルートとはちょっと関係があることを知っていますが、どのようにしてそれらを動的にするのか分かりません。アドバイスをいただければ幸いです。私はASP.NET Core 1.2を使用しています。

また、エンドユーザーが特定のビューから選択できるようにしたいと考えています。つまり、マスターページでどのようにできたかのようなものです。混乱のため

編集補正 こんにちは皆さん申し訳ありませんが、これは

の下に私に指摘したようにasp.netのコアアプリ1.1でないバージョン2である私は

private solitudeDContext _context; 

    public CmsController(solitudeDContext context) 
    { 
     _context = context; 
    } 


    public IActionResult GetContent(string slug) 
    { 

     CmsPages _page = new CmsPages(); 

     _page= _context.Pages.Where(w=>w.slug==slug).Select(s=>s.Content).Single(); 


    } 
} 

クラスCMSコントローラと呼ばれるコントローラを持っていますCMSページの

public class CmsPages 
{ 
    [Key] 
    public int id { get; set; } 

    public string Title { get; set; } 

    public string Description { get; set; } 

    public string slug { get; set; } 

    public string Content { get; set; } 

    public string PageView { get; set; } 

    public DateTime startDate { get; set; } 

    public DateTime EndDate { get; set; } 

    public bool isDeleted { get; set; } 

    public bool isVisible { get; set; } 



    public string Creator { get; set; } 

    public PageStatus PageStatuses { get; set; } 

} 

編集2

[OK]をので、私は、次の

private solitudeDContext _context; 

    public CmsController(solitudeDContext context) 
    { 
     _context = context; 
    } 


    public IActionResult GetContent(string slug) 
    { 

     CmsPages _page = new CmsPages(); 

     var _content= _context.Pages.Where(w=>w.slug==slug).Select(s=>s.Content).Single(); 

     return View(); 

    } 
    public IActionResult Index() 
    { 

     return View(); 
    } 

を試してみましたが、私の見解ではそのちょうど空白のページを示す私は行方不明です何かが私も、このためのCMSをビューを持っていなければならないのか。あなただけStartup.cs

でこのような何か
routes.MapRoute(
      name: "cmsroute", 
      template: "{slug}" 
      , defaults: new { controller = "Cms", action = "GetContent" } 
      ); 

注ルートを追加するものではなく、あなたが私のプロジェクトcloudscribe.SimpleContentもあなたなら、あなたに役立つかもしれませんあなた自身の新しいCMSを構築することができます

 app.UseStaticFiles(); 
     app.UseIdentity(); 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 


      routes.MapRoute(
       name: "cmsroute", 
       template: "{slug}" 
       , defaults: new { controller = "Cms", action = "GetContent" } 
      ); 
+0

ASP.NET Core 1.2はありません。 1.0.x、1.1.x、および2.0プレビューのみ – Tseng

+1

上記の方法で**動作していないものもありますか?アプリケーションを起動した後にルートテーブルを追加/削除/変更したくないので、スラッグの使用は正しい方法です。頻繁にルーティングを変更するとパフォーマンスが賢明でないため、スタートアップ時にのみルートを設定する必要があります。 – Tseng

+0

こんにちは@Tsengベストプラクティスとは何かを尋ねています。コアがスラッグを取得し、現在のURLを正しいもの。 – david

答えて

3

コードを勉強したり、やり方に関するアイデアを得ることができます。

+0

こんにちはジョー私はそれのパスの感謝を伝えるために自分自身の方法で何かを追加する必要はないだろうといいえ、私は内部プロジェクトメイトのためにその事を傾けることはできません、これは私のためのちょうど学習曲線です正直言って、ウェブフォームは使用していませんでした。 – david

+0

また、テンプレートでは、クラスのPageTemplateというフィールドに基づいてビューを設定できるようにしたいと考えています。 – david

+0

テンプレートは、一致するURLのパターンです。ルーティングについてのドキュメントhttps://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing –

関連する問題