我希望有人可以帮我解决我打算做的事情......
我想创建一个动态的“City.aspx”页面,该页面接受url参数并根据该特定城市动态生成页面。
例如,如果某人打电话给“City.aspx?city = london”,那么它会构建一个包含与伦敦相关的自定义内容的页面,如果有人调用了“City.aspx?city = manchester”页面,那么它将构建页面与曼彻斯特有关的内容。
我已经研究过构建站点地图和UrlRewriting,我很确定我可以使用参数重定向到这个新页面,但不知道接下来我需要做什么。
有人可以帮忙吗?
由于
TaxiRoute
答案 0 :(得分:1)
我建议您创建类似于/ city / london / 1234的网址,其中最后一部分是您的文档的ID。 通过在Umbraco中使用内置的UrlRewrite函数,您可以将url内部重写为/city.aspx?name=london&id=1234 在/config/Urlewriting.config中,您可以添加重写规则。 对于上述内容,您需要这样的内容:
<add name="city_rewrite"
virtualUrl="^~/city/(.*)/(.*)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/city.aspx?name=$1&cityid=$2"
ignoreCase="true" />
完成此操作后,您可以在City.aspx宏的代码隐藏中使用以下代码来获取相应的文档。
// get the city Document Id from the querystring
string cityID = HttpContext.Current.Request.QueryString["cityid"];
if (!string.IsNullOrWhiteSpace(cityId))
{
// get the cityNode
Node cityNode = new Node(cityId);
// do whatever you want with this node, like display it's data
}
这是一个.NET宏,当然你可以用XSLT或Razor代码做同样的事情。
答案 1 :(得分:0)
如果您拥有标准Umbraco内容之外的信息,这些信息对于每个城市都是动态的,那么只需编写宏或宏(或部分视图?)以通过“city”获取参数获取动态数据。然后,您可以使用UrlRewriting使URL看起来像标准网页(/city/london.aspx)。 UrlRewriting将使该URL显示给服务器,就好像它是:/city.aspx?city = london。 (http://our.umbraco.org/wiki/reference/packaging/package-actions/community-made-package-actions/add-an-url-rewrite-rule)
在您的宏中,您可以通过括号语法(http://our.umbraco.org/wiki/reference/templates/umbracomacro-element/macro-parameters/advanced-macro-parameter-syntax)将“city”get参数作为宏参数传递给宏。或者您可以通过请求变量(razor)或Umbraco.library(XSLT)获取city参数。