带有查询字符串的URI映射器似乎不起作用

时间:2011-07-26 13:56:32

标签: silverlight silverlight-4.0 query-string uri

我正在尝试设置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。

我的做法是不正确的?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您在bowser(hostpage.aspx#/ RequirementOverview / Foo)中获得的URL是您应该期望的,因为您正在使用映射的URI。

要获取QueryString参数,您只需覆盖页面的OnNavigatedTo,即可访问QueryStringDictionary<string,string>)属性NavigationContext这是Page类的成员,如下所示:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    try
    {
       var id = int.Parse(NavigationContext.QueryString["id"];
    }
    catch{}
}

希望这会有所帮助:)