私は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" }
);
ASP.NET Core 1.2はありません。 1.0.x、1.1.x、および2.0プレビューのみ – Tseng
上記の方法で**動作していないものもありますか?アプリケーションを起動した後にルートテーブルを追加/削除/変更したくないので、スラッグの使用は正しい方法です。頻繁にルーティングを変更するとパフォーマンスが賢明でないため、スタートアップ時にのみルートを設定する必要があります。 – Tseng
こんにちは@Tsengベストプラクティスとは何かを尋ねています。コアがスラッグを取得し、現在のURLを正しいもの。 – david