Проблема UriMapper - PullRequest
       12

Проблема UriMapper

2 голосов
/ 16 апреля 2010

У меня есть следующий xaml (несущественная разметка, удаленная в целях краткости):

<navigation:Frame x:Name="ContentFrame" >
    <navigation:Frame.UriMapper>
        <uriMapper:UriMapper>
            <uriMapper:UriMapping Uri="/{pageName}" 
                                  MappedUri="/Views/{pageName}.xaml"/>
            <uriMapper:UriMapping Uri="/FMChart/{metricID}/{orgID}" 
                                  MappedUri="/Views/FMChart.xaml?metricID={metricID}&orgID={orgID}"/>
        </navigation:Frame.UriMapper>
    </navigation:Frame.UriMapper>
</navigation:Frame>

Я создаю объекты HyperLinkButton динамически (в коде), например:

int metricID = 1;
int orgID = 1;

HyperlinkButton button = new HyperlinkButton();
button.Name        = Guid.NewGuid().ToString();
button.TargetName  = "ContentFrame";

// this string doesn't work
string url = string.Format("/FMChart/{0}/{1}", metricID, orgID);

button.NavigateUri = new Uri(url, UriKind.Relative);

Когда я нажимаю кнопку b, браузер отображает пустую страницу и в конечном итоге предоставляет мне ДЕЙСТВИТЕЛЬНО длинную трассировку стека (исключение InvalidOperation). Если я возьму параметры из указанной строки:

string url = "/FMChart";

... работает как положено (открывает нужную страницу).

Я также пробовал следующие строки:

/ FMChart / {0} & {1}
/ FMChart / {0} & {1}

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 17 апреля 2010

Это UriMapping неверно: -

<uriMapper:UriMapping Uri="/FMChart/{metricID}/{orgID}" 
    MappedUri="/Views/FMChart.xaml?metricID={metricID}&orgID={orgID}"/>

должно быть: -

<uriMapper:UriMapping Uri="/FMChart/{metricID}/{orgID}" 
    MappedUri="/Views/FMChart.xaml?metricID={metricID}&amp;orgID={orgID}"/>

Xaml - это xml, поэтому символ & необходимо кодировать как объект &amp;.

0 голосов
/ 16 декабря 2010

Фактический ответ от CodeProject состоял в том, что у него было это отображение в НИЖНЕМ, и что порядок отображений имеет значение.

Просто для тех, кто смотрит.

...