我对ASP.NET Core和路由非常陌生,我在寻找建议。在过去,我会有一个页面,如CMS或page.aspx
。来自sql数据库的动态路由
我的主要问题是我将如何去创建一个独特的网址离线,即www.mydomain.com/test-page或如果他们选择一个子类别www.mydomain.com/cat/page。
我知道它有点与路线有关,但我不知道如何让它们变成动态的。任何意见不胜感激。我正在使用ASP.NET Core 1.2。
另外,我希望能够让最终用户能够从某些视图中进行选择,例如您可以如何使用母版页完成。
编辑矫正 嗨伙计遗憾的混乱,这是如下
向我指出asp.net核心应用1.1不是版本2我有一个名为CMS控制器
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页面
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
行,所以我尝试了以下
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?
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
还有什么**不工作**与上述方法?使用slug似乎是正确的方法,因为一旦应用程序启动,您不想添加/删除/修改路由表。路由只应该在启动时配置,因为经常更改路由是性能不佳 – Tseng
您好@Tseng我只是问什么被认为是最佳实践如何告诉核心从数据库获取slug并将当前url转换为正确的一个。 – david