Рекомендации по использованию ресурсов ASP.NET

Я относительно новичок в ASP.NET и задавался вопросом, может ли кто-нибудь пролить свет на то, когда мне следует использовать относительные ссылки (например, ../images/banner_tinga.jpg) по сравнению с тильдой (например, ~ / images / banner_tinga.jpg). В зависимости от ситуации вы можете достичь той же цели, используя любой из них. Каковы плюсы и минусы каждого механизма? Одним из аргументов в пользу относительной ссылки, по-видимому, является неприязнь Visual Studio во время разработки к ресурсам, на которые указывает тильда. Всякий раз, когда я ссылаюсь на файл css, почему он указывает, что он не может быть найден.

С уважением, javacavaj

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
571
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Лично я сейчас использую только относительные ссылки и избегаю тильды. Это может привести к проблемам в дальнейшем. Хотя я не могу показать какой-либо связанный с ним справочный материал, я помню, что где-то слышал / читал, что ссылки с тильдой устарели

Ответ принят как подходящий

Тильда будет работать только с элементами управления, имеющими атрибут runat = "server", и не будет работать со стандартными элементами управления HTML. Так что универсального выбора действительно нет. Если вы хотите использовать тильду с элементами управления HTML, вам нужно будет пометить их как runat = "server", как это

<img src = "~/images/myimage.png" runat = "server">

Но это не похоже на хорошую практику, потому что он будет добавлен в состояние просмотра. Но тогда вы также можете сделать это

<img src = "~/images/myimage.png" runat = "server" EnableViewState = "False">

Так что тогда выбор становится поистине универсальным.

Теперь отвечу на ваш исходный вопрос:

Я думаю, что лучше использовать тильду «~», потому что она дает вам ориентир - корень вашего веб-сайта. Схема относительного пути "../" не сработает, если вы измените папку веб-страницы и перейдете на другой уровень (выше или ниже в иерархии).

Надеюсь, это помогло.

Чтобы перейти к вашему файлу CSS, сделайте следующее

<link href = "<%= VirtualPathUtility.ToAbsolute("~/css/style.css/") %>" type = "text/css">

Кирилл, отличный ответ, но я должен отметить одну вещь. Я не вижу ничего плохого (или плохого) в использовании viewstate с ASP.NET. Вам просто нужно осознавать тип приложения, которое вы создаете, и количество пользователей. В большинстве случаев это не проблема.

jwalkerjr 31.12.2008 10:52

Что ж, это может создать проблему, если у вас есть около 100 элементов управления, потому что обратная передача займет больше времени. Это беспорядок, если вы используете updatePanels и ASP.Net ajax, потому что все состояние просмотра будет передано. Вот почему я предлагаю установить для него значение false для определенных элементов управления :)

Cyril Gupta 31.12.2008 10:54

Хммм ... Я полностью не согласен с @StevenMcD. Тильда всегда указывает на корень разрабатываемого веб-приложения, тогда как обозначение относительного пути основано на вашем текущем местоположении в веб-приложении. Я думаю, что в конечном итоге, если вы реорганизуете или реструктурируете расположение файлов на веб-страницах, обозначение тильды значительно упростит вам рефакторинг, поскольку вы всегда знаете, что базовый путь (~) относится к корню веб приложение. Вы не можете быть уверены в этом, используя обозначение "../".

Еще одно замечание ... обозначение тильды (~) очень удобно при использовании пользовательских элементов управления и мастер-страниц в ASP.NET. Когда вы вставляете пользовательский элемент управления в веб-форму, эта веб-форма может быть вложена в любую часть файловой структуры вашего приложения. Относительные пути просто не гарантированно работают в этом сценарии. Используя обозначение тильды, все пути могут быть записаны в коде и будут работать, потому что они основаны на корне веб-приложения. Надеюсь это поможет.

Кстати, использование символа ~ никоим образом не считается устаревшим в ASP.NET.

ОБНОВЛЕНИЕ: как упоминал Кирилл, ~ доступен только при использовании элементов управления ASP.NET. Чистые HTML-элементы с ним работать не будут.

Другие вопросы по теме