Silverlight: шаблон навигационного приложения - можем ли мы иметь более чистые URL-адреса?А URL как у asp.net MVC / Routing есть? - PullRequest
1 голос
/ 29 января 2011

Я только что создал новое приложение silverlight, используя шаблон навигации Silverlight.Все прошло хорошо и работает: -)

Но у URL есть расширение aspx ... мы не можем удалить, как это сделал asp.net MVC?

    SilverlightApplication1TestPage.aspx

Следующая вещьчто мне показалось странным то, как он добавляет имя страницы, он использует символ # примерно так

    SilverlightApplication1TestPage.aspx#Home

Я подумал, что было бы более естественно сделать это (также как asp.net mvc)

     SilverlightApplication1TestPage/Home

     SilverlightApplication1TestPage/About

Есть ли какая-то работа вокруг или обновлен какой-то образец tamplete

Или это невозможно?

Спасибо

Ответы [ 3 ]

1 голос
/ 29 января 2011

Суть: нет. Для упрощения все в URL до # принадлежит серверу, а все после # принадлежит клиенту.

Приложение Silverlight существует полностью с одним URL-адресом (страницей) с точки зрения серверов. Когда вы используете навигационную платформу Silverlight, вы перемещаетесь внутри приложения внутри этой отдельной HTML-страницы.

Если удалить #, то будут произведены выборки на сервер, и результаты заменят существующую страницу, текущее приложение SL будет выгружено для замены полученным содержимым. Даже если этот полученный контент является тем же приложением SL, но направлен в другой контекст, он все равно выгрузит приложение и перезагрузит его.

Использование # - это просто средство навигации в приложении Silverlight, которое можно отслеживать в истории навигации браузеров. Собственная кнопка возврата в браузере будет работать таким образом, что не удивит пользователя.

1 голос
/ 29 января 2011

Я использую Silverlight с Asp.Net MVC, и вот пример URL: http://localhost:37920/#/AdvancedSearch. Когда я использовал прямой Asp.Net, тогда да, у меня были файлы .aspx. Это все еще не то, что вы действительно хотите, но, возможно, приближает вас.

0 голосов
/ 29 января 2011

Спасибо всем за комментарии, это заставило меня задуматься ... и я думаю, что исправил это ... и нашел решения, использующие маршрутизацию asp.net 4.0 ...

Добавьте глобальный файл в проект asp.net, а затем добавьте его в запуск приложения

// Code that runs on application startup
        RouteTable.Routes.MapPageRoute("SilverlightRoute",
        "MyApp",
        "~/SilverlightApplication1TestPage.aspx");
...