我一直在添加一些不起作用的自定义路线。
这让我想到复合c1可能有一个C1路由映射到的物理URL。我确信我在某个时候看到了与/Renderers/Page.aspx有关的东西。有人知道我是否可以以这种方式进入物理页面吗?
谢谢
大卫
好的,还有一些进一步的信息。
"~/Renderers/Page.aspx?pageId=d622ab3b-2d33-4330-9e6e-d94f1402bc80");routes.MapPageRoute(“作业列表”、“作业详细信息/{类别}/{title}/{id}”)
不幸的是,这还是行不通的。我在Renderers/Page.aspx值上有一个错误,不能为null。参数名称: pageUrlData
有什么想法吗?
发布于 2013-10-25 09:00:54
与其使用像~/Renderers/Page.aspx?pageId=d622ab3b-2d33-4330-9e6e-d94f1402bc80这样的页面URL的内部表示,不如使用像/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;
}
} 这将为您提供页面的公共URL和提供的id。如果您正在运行一个具有不同内容语言的网站,此方法将自动获取与您的MVC功能正在运行的页面语言匹配的URL。
如果您需要显式更改该URL的语言,请使用重载的DataConnection(CultureInfo culture)而不是默认的构造函数。
有了上述方法之后,您应该能够这样做:
routes.MapPageRoute(
"Job-Listing",
"job-detail/{category}/{title}/{id}",
GetPageUrl(Guid.Parse("d622ab3b-2d33-4330-9e6e-d94f1402bc80")); https://stackoverflow.com/questions/18929050
复制相似问题