Asp.net mvc 复合C1 routes.MapPageRoute-指向页面
我一直在添加一些不起作用的自定义路由Asp.net mvc 复合C1 routes.MapPageRoute-指向页面,asp.net-mvc,asp.net-mvc-routing,c1-cms,Asp.net Mvc,Asp.net Mvc Routing,C1 Cms,我一直在添加一些不起作用的自定义路由 我可以让这个MVC路由工作,但问题是它直接路由到视图,而不是包含主布局等的页面。 MapRoute(“作业列表”、“作业详细信息/{category}/{title}/{id}”、新的{controller=“JobSearchModule”、action=“JobDetail”}) 我尝试路由到一个页面,该页面如下所示。这不起作用,simple转到找不到的页面。 MapPageRoute(“工作列表”、“工作详细信息/{category}/{title}/
有什么想法吗 不要使用页面URL的内部表示形式,如
~/renders/page.aspx?pageId=D62AB3B-2d33-4330-9e6e-d94f1402bc80
您应该使用公共表示形式,如/my/page/URL
要从页面id获取公共表示,可以使用如下方法:
using Composite.Data;
...
public string GetPageUrl( Guid pageId )
{
using (var c = new DataConnection())
{
PageNode p = c.SitemapNavigator.GetPageNodeById(pageId);
return p.Url;
}
}
这将为您提供具有所提供id的页面的公共URL。如果您使用不同的内容语言运行网站,此方法将自动获取与运行MVC功能的页面语言相匹配的URL
如果需要显式更改此URL的语言,请使用重载数据连接(CultureInfo culture)
而不是默认构造函数
通过上述方法,您应该能够做到这一点:
routes.MapPageRoute(
"Job-Listing",
"job-detail/{category}/{title}/{id}",
GetPageUrl(Guid.Parse("d622ab3b-2d33-4330-9e6e-d94f1402bc80"));