我希望有人能在我计划做的事情上给我一些帮助…
我想创建一个动态的"City.aspx“页面,它接受一个url参数,并根据特定的城市动态生成一个页面。
例如,如果有人调用"City.aspx?city=london“,那么它将使用与伦敦相关的自定义内容构建一个页面,如果有人将该页面称为"City.aspx?city=manchester”,它将使用与曼彻斯特相关的内容构建页面。
我已经研究了构建sitemap和UrlRewriting,我非常确定我可以使用参数重定向到这个新页面,但不知道下一步需要做什么。
有谁能帮帮忙吗?
谢谢
TaxiRoute
发布于 2013-01-21 00:20:17
我建议您创建像/city/london/1234这样的url,其中最后一部分是您的文档的ID。通过使用Umbraco中内置的UrlRewrite函数,您可以在内部将url重写为/config/Urlewriting.config中的/city.aspx?name=london&id=1234,您可以添加重写规则。对于上面的代码,你需要类似这样的东西:
<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
}这是一个XSLT宏,当然你也可以用.NET或Razor-code来做同样的事情。
发布于 2013-01-20 07:44:52
如果您有每个城市动态的标准Umbraco内容之外的信息,那么只需编写一个或多个宏(或部分视图?)通过“城市”get参数获取动态数据。然后,您可以使用UrlRewriting使URL看起来像标准网页(/city/LONDO.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)来获取城市参数。
https://stackoverflow.com/questions/14414680
复制相似问题