URI Mapper со строкой запроса не работает - PullRequest
1 голос
/ 26 июля 2011

Я пытаюсь настроить отображение 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 'будет передан в виде строки запроса на страницу требований, и тогда мы сможем поработать над ней.

Однако при вызове Fame.Navigate ("RequirementOverview / Foo", UriKind.Relative) я всегда оказываюсь на странице примерно так: hostpage.aspx # / RequirementOverview / Foo, и на страницу не передается запрос.Скорее, это похоже на работу (навигация), но мой navigationContext queryString возвращается null.

Мой подход к этому неверен?Заранее спасибо.

1 Ответ

2 голосов
/ 26 июля 2011

URL, который вы получаете в Bowser (hostpage.aspx # / RequirementOverview / Foo), - это то, что вы должны ожидать, так как вы используете сопоставленные URI.нужно переопределить OnNavigatedTo вашей страницы, получить доступ к свойству QueryString (которое является Dictionary<string,string>) NavigationContext, который является членом класса Page, например:

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

Надеюсь, это поможет:)

...