我正在尝试设置URI映射器,以便最后,我可以将查询字符串传递给我正在加载的xaml页面。
这是我在XAML中定义的内容。
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="RequirementOverview/{id}" MappedUri="/View/Pages/RequirementOverview.xaml?id={id}" />
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/View/Pages/{pageName}.xaml"/>
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
我的意图是,如果你点击'/ RequirementOverview / Foo'之类的链接,“Foo”会作为查询字符串传递给Requirement页面,然后我们就可以用它来实现我们的魔力。
但是当调用Fame.Navigate(“RequirementOverview / Foo”,UriKind.Relative)时,我总是像这样结束页面:hostpage.aspx#/ RequirementOverview / Foo并且没有查询传递给页面。相反,它似乎工作(导航),但我的navigationContext queryString返回null。
我的做法是不正确的?提前谢谢。
答案 0 :(得分:2)
您在bowser(hostpage.aspx#/ RequirementOverview / Foo)中获得的URL是您应该期望的,因为您正在使用映射的URI。
要获取QueryString
参数,您只需覆盖页面的OnNavigatedTo
,即可访问QueryString
(Dictionary<string,string>
)属性NavigationContext
这是Page
类的成员,如下所示:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
try
{
var id = int.Parse(NavigationContext.QueryString["id"];
}
catch{}
}
希望这会有所帮助:)