Маршрутизация по умолчанию веб-формы asp.net не работает - PullRequest
1 голос
/ 08 декабря 2011

РЕДАКТИРОВАТЬ: я решил сам. Потому что путь ссылки таблицы стилей /css/style.css не css/style.css, URL не будет исправлен asp.net. Я обнаружил, что <link> <meta> и <title> будет добавлено как серверный элемент управления для заголовка, когда заголовок помечен как runat="server", поэтому этот серверный элемент управления автоматически исправит текущую справочную проблему.

!!! НО, <script> игнорируется, Одним из решений является <%= ResolveClientUrl('~/js/jquery.js') %>. Но это не работает, если у вас есть тема, привязанная к главной странице, asp.net не может добавлять таблицы стилей в App_Themes для заголовка, когда она содержит такое <% %> выражение, asp.net выдаст исключение.

Так что, похоже, лучшее решение - это <ScriptManager>.

Еще одним важным открытием является то, что когда у вас есть <ContentPlaceHolder> в главном runat=server заголовке, таблица стилей внутри <Content> дочерней страницы, использующей эту главную страницу, не будет рассматриваться как серверный элемент управления. Так что <Content> дочернего страница, которую вы должны использовать <%= ResolveClientUrl%> для обработки исправления URL.

ORINGIAL:

Я использую asp.net 4.0 на IIS 7 Express. Я маршрутизирую «MarketList / {type}» в «~ / MarketList.aspx» со значением по умолчанию new {type = 0}. URL "localhost: 4888 / MarketList" просто работает хорошо, я могу получить значение по умолчанию "0".

Но я обнаружил, что "/" испортит ссылки на таблицу стилей и JavaScript, определенные на главной странице "Main.master". «Main.master» находится в корневом уровне вместе с «MarketList.aspx». Таблица стилей в «Main.master» определяется как css/style.css. Папка "css" также находится на корневом уровне. Когда я обращаюсь к "/ MarketList", это работает хорошо. Но, "/ MarketList / 1" дает значение "1" для {type}. URL-адрес таблицы стилей на странице становится "../css/style.css", который указывает на "/MarketList/css/style.css". Этого не существует (очевидно).

Итак, я решил использовать «-» для разделения этих частей, я направляю «market-list- {type}» с такой же настройкой, как и выше. Но я обнаружил, что не могу получить доступ к URL-адресу маршрутизации по умолчанию, который, по моему мнению, будет «localhost: 4888 / market-list-». "localhost: 4888 / market-list" тоже не работает. Будет работать только "/ market-list-0".

Может ли кто-нибудь мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...