如何在 Kentico 9 中使用通配符 URL?

How to use Wildcard URLs in Kentico 9?

我尝试在我的项目中使用通配符 URLs,但它对我不起作用。我将页面 URL 设置为 /path/to/page/{UserId}(我还尝试了 UserNameNinjaMaster 通配符名称以防止命名冲突)但我无法在模板或 Web 部件中访问此变量(我只尝试了 Repeater web 部件)。

在我的 HTML 模板中,我尝试 {% UserId #%}{% UserName #%}{% NinjaMaster #%} 写入传递值,但没有任何反应。我尝试了 URLs,例如 /path/to/page/12345/path/to/page/?UserId=12345/path/to/page/?userid=12345

URL中的通配符名称实际上是一个查询字符串。

访问 /path/to/page/5 时(通配符 URL 为 /path/to/page/{UserId}),URL 被重写为 /CMSPages/PortalTemplate.aspx?aliasPath=/actual/path/to/page&UserId=5

要访问宏中的查询字符串值,请使用 {% QueryString.UserId %}

了解 query string macros。 您可以使用两种类型的语法:{? UserId ?}{% QueryString.UserId %}

我直接引用 Kentico's documentation

要从 URL 加载查询字符串参数的值,请使用以下格式的宏:

{? parameter ?}

查询字符串宏支持所有 K# 语法。所有可用查询字符串参数的名称自动用作存储相应参数值的变量。

例如,在具有 URL 的页面上,如 /Home.aspx?nodeid=10,{? nodeid ?} 解析为 10。

或者,您可以在标准宏中获取查询字符串参数的值:

{% QueryString.parameter %}