Lidar com caminhos de arquivo relativos em páginas ASP.NET e Mestre
-
08-07-2019 - |
Pergunta
Esta pode ser uma questão dolorosa simplesmente por que eu vou ser ridicularizado, mas estou tendo dificuldade em usar filepaths em masterpages. Eu acredito que este é porque se uma página em um sub-diretório para usar o masterpage, então o caminho de arquivo está incorreto.
Para corrigir essa necessidade I para obter o filepath a partir da raiz, mas eu não consigo fazê-lo funcionar.
Eu tentei:
<script type="text/javascript" src="~/jQueryScripts/jquery.js"></script>
e
<script type="text/javascript" src="../jQueryScripts/jquery.js"></script>
Sem sorte em ambos!
Algumas ideias sobre como eu posso dizer que para obter o filepath da raiz? Thanks:)
Solução
Eu só estou assumindo por filepath, você url realmente média (ou uri, eu esqueço qual é parcial).
Sem o ~, o primeiro exemplo deve funcionar. <script type="text/javascript" src="/jQueryScripts/jquery.js"></script>
faria com que o navegador para solicitação http://www.example.com/jQueryScripts/jquery.js (onde www.example.com é o seu domínio).
Outras dicas
Se você estiver executando um site habilitado para AJAX, veja a minha resposta a forma preferida -in-vs-2008 mas aninhado-se incluir a referência em relação ao JavaScript no vS 2008 aninhados Masterpage .
Eu acredito que você precisa ter runat=server
na tag <head>
do MasterPage
para este URL rebasing ao trabalho.
<head runat="server">
Primeiro o til na frente é uma coisa asp.net para uso em controles de servidor e não funcionará em HTML básico.
Sem entrar em explicações detalhadas você pode simplesmente usar uma barra (/) na frente, e incluem o nome do aplicativo web se não a raiz do site.
Ou você poderia colocar o código em sua página principal para incluindo dinamicamente scripts e deixá-lo lidar com o pathing. Como:
public void AddJavascript(string javascriptUrl)
{
HtmlGenericControl script = new HtmlGenericControl("script");
script.Attributes.Add("type", "text/javascript");
javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version;
script.Attributes.Add("src", ResolveUrl(javascriptUrl));
Page.Header.Controls.Add(script);
}
O código acima também anexa a versão de montagem. Eu uso isso principalmente para o desenvolvimento para que meus arquivos javascript são atualizados sempre que eu construir.
Você pode usar o Page.ResolveUrl método para contornar este
Por exemplo:
<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>