none
Llamar procedimiento de vb.net "no shared" desde jquery RRS feed

  • Pregunta

  • Saludos,

    Resulta que tengo código jquery para realizar algunas funciones del lado del cliente y que también debe llamar unos procedimientos escritos en vb.net.

    He notado que la única manera de que el jquery encuentre el procedimiento de vb.net es definiendo este ultimo como "Shared" pero desafortunadamente este tipo de procedimiento no puede manipular variables de instancia, lo cual es indispensable para mi proyecto.

    Alguien tiene una solución ? Les agradezco su colaboración


    JGV

    sábado, 20 de diciembre de 2014 20:35

Respuestas

Todas las respuestas

  • Si es una aplicación de MVC (que debe de serlo, puesto que has puesto la ´pregunta en el foro de MVC), entonces lo que harás normalmente desde jquery es usar $.ajax para llamar a un método de acción de un controlador. Y los métodos de acción SIEMPRE son métodos de instancia, no pueden ser Shared. Pero en cualquier caso, no tiene sentido lo que dices de que quieres que sea un método de instancia para poder acceder a las variables de instancia, ya que la instancia del controlador se construye y se destruye a cada llamada, por lo que las variables de instancia siempre se pierden entre una llamada y la siguiente.
    • Propuesto como respuesta Jesús López domingo, 21 de diciembre de 2014 9:24
    sábado, 20 de diciembre de 2014 21:25
  • >>la única manera de que el jquery encuentre el procedimiento de vb.net es definiendo este ultimo como "Shared" pero desafortunadamente este tipo de procedimiento no puede manipular variables de instancia, lo cual es indispensable para mi proyecto.

    lo que planteas hacer no se puede lograr, exponer un web service requiere que sea shared

    el problema esta en que quieres acceder a una variable de instancias, pero requiera que un desarrollo web no mentiene estado por lo cual acceder a una variable no te sirve porque no mantiene ningun valor (esto lo comento tambien Alberto), quizas podrias poner un valor en la Session, y desde el web service usar el HttpContent.Current.Session para acceder al valor

    la verdad desconozco lo que quieres lograr pero creo que deberias replantearlo de otra forma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    domingo, 21 de diciembre de 2014 5:18
  • Gracias Leandro por tu sugerencia, resulta que el caso particular es que tengo un proyecto web con unas variables de sesión la cuales invoco mediante sesión.item ("nombrevariable"), la dificultad consiste en que un procedimiento "Shared" NO puede accesar dichas variables porque me sale un error advirtiéndomelo. Desafortunadamente el procedimiento lo tengo definido tipo Shared por cuanto es invocado desde código jquery.

    El llamado de jquery hacia el procedimiento me funciona bien mediante $.Ajax (siempre y cuando el procedimiento sea de tipo Shared) pero no puedo ver variables de la instancia ni de la sesión.

    Tienes alguna idea del proceder ? Gracias.


    JGV

    martes, 23 de diciembre de 2014 21:43
  • hola

    pero desde un metodo shared si puedes acceder a la session si usas HttpContext.Current.Session

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Jose Gregorio domingo, 28 de diciembre de 2014 2:38
    miércoles, 24 de diciembre de 2014 1:35
  • Gracias Leandro, tienes toda la razón: con  HttpContext.Current.Session puedo ver las variables de sesión desde un procedimiento shared pero no puedo hacer referencia a los controles del webform. Existe alguna manera ?

    JGV

    miércoles, 24 de diciembre de 2014 3:11
  • [...] procedimiento shared pero no puedo hacer referencia a los controles del webform. Existe alguna manera ? [...]

    Cuando dices que no puedes acceder a los controles del WebForm, plantéate esta pregunta: ¿de QUÉ webform? Es decir, cada vez que desde el navegador se navega al servidor, se crea una instancia del WebForm, se envían los resultados al navegador, y se destruye el WebForm. Aunque sigas viendo el resultado en la pantalla del navegador, el WebForm ya NO EXISTE en el servidor. Si llamas a un método shared desde javascript, ese método no puede de ninguna manera acceder a un webform que ya no existe (y si por casualidad en ese momento existe alguna instancia del webform, probablemente será de otro usuario y no del mismo que hizo la llamada al procedimiento shared).
    miércoles, 24 de diciembre de 2014 9:26