PROBLEMAS COM PUBLIC SHARED

MLALEX 06/06/2017 19:46:30
#474358
Olá pessoal!!

Vi mais de 1000 exemplos na internet de como chamar o Public Shared via javascript e nenhum funcionou.

Tenho o seguinte código no CodeBehind:

  <System.Web.Services.WebMethod()> _
Public Shared Sub DeletaFoto1()
(...)
End Sub



Tentei o seguinte no javascript:

            if (confirm([Ô]Você irá deletar a Foto 1[Ô])) {

PageMethods.DeletaFoto1(); // não funciona. Dá erro pois não reconhece essa função PageMethods

document.getElementById([Ô]<%DeletaFoto1%>[Ô]).submit(); // de qualquer jeito que utilize esse <%...%> a função é chamada sempre que ha um PostBack,

}



Podem me ajudar, por favor??

DS2T 06/06/2017 20:12:59
#474360
Resposta escolhida
Acho que o jeito mais fácil de fazer isso, é usando JQuery.
Faça uma solicitação Post, usando o objeto ajax.

Abraços!
MLALEX 07/06/2017 14:57:47
#474375
Tá difícil!!!

Tentei o código abaixo e não funcionou:

jQuery.ajax({
type: [Ô]GET[Ô],
url: [Ô]MinhaPagina.aspx/DeletaFoto1[Ô],
data: [Ô][Ô],
}
})



Criei então a pagina DeletaFoto.ashx como código abaixo:

    Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

Dim param As String = context.Request.QueryString([Ô]param[Ô]).ToString()

File.Delete(param)

context.Response.ContentType = [Ô]text/plain[Ô]
context.Response.Write([Ô]Hello World![Ô])

End Sub



E para chamar a página:

          jQuery.ajax({
type: [Ô]GET[Ô],
url: [Ô]DeletaFoto.ashx[Ô],
data: [Ô]param=[Ô] + CaminhoFoto,
success: function (data) {
Alert ([Ô]Foto deletada com sucesso[Ô]);
}
})




Mas a pasta raiz identificada tá diferente [Ô]C:\Program Files (x86)\IIS Express\~\fotos\4935-6.jpg[Ô], quando deveria ser [Ô]D:\Pasta do Programa\fotos\4935-6.jpg[Ô] , portanto dá erro e fala que não foi possível achar o arquivo


O que está errado nesses códigos?
KERPLUNK 07/06/2017 17:56:48
#474381
Fiz um video sobre isso.
MLALEX 07/06/2017 19:50:03
#474386
Valeu Kerplunk!!

Com seu vídeo, consegui acessar a função [Ô]DeletaFoto()[Ô] no CodeBehind, mas mesmo estando na mesma página, a função não consegue achar o caminho da foto a ser deletada.
È o seguinte:

O caminho é o .ImageUrl do ImageButton. Algo do tipo [Ô][Ô]~/fotos/1234.jpg[Ô] mas quando esse caminho é interpretado pela função, a pasta raiz é trocada. O que deveria ser algo do tipo: [Ô]D:\Pasta do Programa\fotos\4935-6.jpg[Ô] é lido pelo método como [Ô]C:\Program Files (x86)\IIS Express\~\fotos\4935-6.jpg[Ô]

Se eu colocar o caminho remoto tipo [Ô]www.meusite.net.br/fotos/1234.jpg[Ô] deve funcionar, mas desse jeito não consigo testar local, a menos que eu faça o upload da foto em questão.

E aí?? Como faço para o método encontrar a pasta raiz onde o form está?
GUIMORAES 08/06/2017 09:03:24
#474393
Para acessar um diretório virtual, você pode utilizar o MapPath

  
dim caminho as string = context.Server.MapPath([Ô]~/suapasta/seuarquivo.txt[Ô])

MLALEX 12/06/2017 14:40:04
#474463
Desculpem pela demora na resposta, mas com um pouquinho de informações de cada um, PROBLEMA RESOLVIDO.

MUITO OBRIGADO A TODOS!!!
Tópico encerrado , respostas não são mais permitidas