Umbraco中的内容/页面结构

时间:2015-10-21 22:08:00

标签: asp.net asp.net-mvc asp.net-mvc-4 umbraco umbraco7

我在MVC中使用Umbraco。

我在MVC umbraco中创建了一个与查询字符串参数

一起使用的动态页面
http://www.example.com/City?id=1&type=9
http://www.example.com/City?id=5&type=6
http://www.example.com/City?id=6&type=4

在Umbraco内部我有一个名为City的内容页面(连同它的DocumentType和模板),在我的MVC项目中,Controller和Action Method名称是City和City(action方法接受参数id和类型)。

现在我需要创建多个页面,共享页面的功能" City" e.g

http://www.example.com/City/A?id=1&type=9
http://www.example.com/City/B?id=5&type=6
http://www.example.com/City/C?id=6&type=4

每个页面都需要显示相同的动态内容,具体取决于Querystring参数以及我希望由CMS管理的一些修复内容。

如何在Umbraco中创建上述页面? 如何创建上面的Url? 如何在我原来的#34; City""网页?

我是Umbraco的新手所以请指教。

2 个答案:

答案 0 :(得分:0)

您应该阅读路线劫持文档:https://our.umbraco.org/documentation/reference/routing/custom-controllers

网上也有不少教程和博客文章处理这类事情,所以值得进行搜索。

答案 1 :(得分:0)

在config / UrlRewriting.config中,您可以添加一个简单的规则:

<add name="myRule"
          virtualUrl="^~/city/(.*)"
          rewriteUrlParameter="ExcludeFromClientQueryString"
          destinationUrl="~/city?page=$1"
          ignoreCase="true" />

然后它将在umbraco中读取City页面并且还将?page=查询字符串。

因此http://www.example.com/city/A?id=1&type=9将会像http://www.example.com/city?page=A&id=1&type=9一样阅读您的网页,但网址仍为http://www.example.com/city/A?id=1&type=9

要创建一个更漂亮的网址,您可以使用:

<add name="myPrettyRule"
          virtualUrl="^~/city/(.*)/(.*)/(.*)"
          rewriteUrlParameter="ExcludeFromClientQueryString"
          destinationUrl="~/city?page=$1&id=$2&type=$3"
          ignoreCase="true" />

您的网址将如下所示http://www.example.com/city/A/1/9