¿Alguien puede proporcionar buenos ejemplos de llamar a una función de JavaScript desde CodeBehind y viceversa?
c#
javascript
asp.net
ssmsnet
fuente
fuente
Respuestas:
Puedes probar esto:
fuente
Page.ClientScript.RegisterClientScriptBlock
se requiere en su lugar ver esta publicación para obtener información . 2. Vale la pena mencionar que para que MyFunction () funcione, MyFunction () debe definirse antes de las etiquetas de formulario o dentro de ellas, pero NO después de la etiqueta de finalización </form> (de lo contrario, un error esperado del Objeto ocurrir)ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "text", "openDep()", true);
trabajos.this.GetType()
me arroja un errorasp:UpdatePanel
y escrito en un evento de botón. Lo que hace que la página se devuelva.C # a JavaScript: puede registrar el bloque de script para ejecutar en la página de la siguiente manera:
reemplace la
alert()
parte con el nombre de su función.Para llamar al método C # desde JavaScript, puede usar
ScriptManager
ojQuery
. Yo personalmente usojQuery
. Debe decorar el método al que desea llamar desde JavaScript con elWebMethod
atributo Para obtener más información sobre cómo llamar al método C # (llamadoPageMethod
)jQuery
, puede consultar la publicación de Dave Ward .fuente
Llamar a una función de JavaScript desde el código detrás
Paso 1 Agregue su código Javascript
Paso 2 Agregue 1 Script Manager en su webForm y agregue 1 botón también
Paso 3 Agregue este código en su evento de clic de botón
fuente
ScriptManager
como en esta respuesta, noPage.ClientScript
como en otras respuestas. Podría estar relacionado con elasp:UpdatePanel
comentario debajo de la respuesta aceptada.No puedes hacer esto directamente. En WebForms estándar, JavaScript es interpretado por el navegador y C # por el servidor. Lo que puede hacer para llamar a un método desde el servidor usando JavaScript es.
WebMethod
comoattribute
en los métodos de destino.ScriptManager
configuraciónEnablePageMethods
comotrue
.PageMethods
.Me gusta esto:
Paso 1
Paso 2: Agregar un
ScriptManager
en elPage
Paso 3: llamar al método usando JavaScript
Echa un vistazo a este enlace.
Para llamar a una función de JavaScript desde el servidor, puede usar
RegisterStartupScript
:fuente
GetProducts()
función es solo una función de código subyacente que viviría en un controlador en una aplicación MVC, por lo que las etiquetas van por encima de cualquier función que desee poner en un controlador al que desea llamar desde JavaScript .Si necesita enviar un valor como parámetro.
fuente
Otra cosa que podría hacer es crear una variable de sesión que se establezca en el código detrás y luego verificar el estado de esa variable y luego ejecutar su javascript. Lo bueno es que te permitirá ejecutar tu script justo donde quieras en lugar de tener que averiguar si quieres que se ejecute en el DOM o globalmente.
Algo como esto: Código detrás:
En javascript
fuente
No puedes. Codebehind se ejecuta en el servidor mientras que JavaScript se ejecuta en el cliente.
Sin embargo, puede agregar
<script type="text/javascript">someFunction();</script>
a su salida y, por lo tanto, hacer que se llame a la función JS cuando el navegador está analizando su marcado.fuente
Puedes usar literal:
fuente
IIRC Code Behind se compila en el lado del servidor y javascript se interpreta en el lado del cliente. Esto significa que no hay un enlace directo entre los dos.
Lo que puede hacer, por otro lado, es que el cliente y el servidor se comuniquen a través de una ingeniosa herramienta llamada AJAX. http://en.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML
fuente
Prueba esto en Code Behind y funcionará al 100%
Escriba esta línea de código en su archivo Code Behind
Y esta es la página del formulario web
fuente
fuente
Ejemplo de trabajo: _
Código detrás
Posibles escollos: -
CodeBehind="History.aspx.cs"
está apuntando a una página incorrectafuente
Me he dado cuenta de que muchas de las respuestas aquí están usando
ScriptManager.RegisterStartupScript
y si vas a hacer eso, esa no es la forma correcta de hacerlo. La forma correcta es usarScriptManager.RegisterScriptBlock([my list of args here])
. La razón es que solo debe usar RegisterStartupScript cuando se carga su página (de ahí el nombre RegisterStartupScript).En VB.NET:
C ª#:
Por supuesto, espero que sea obvio que necesita reemplazar la clave con su identificador de clave y probablemente debería mover todo esto a una sub / función / método y pasar la clave y someJavascriptObject (si su método javascript requiere que su argumento sea un objeto javascript).
Documentos de MSDN:
https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx
fuente
usar su función es suficiente
fuente
Así es como lo hice.
El marcado HTML que muestra un control de etiqueta y botón es el siguiente.
La función de JavaScript está aquí.
El código detrás para activar la función de JavaScript está aquí.
fuente
esto funciona para mi
fuente
Como no pude encontrar una solución que tuviera un código detrás, que incluye probar el
ClientScript
yScriptManager
como dijo mutanic y Orlando Herrera en esta pregunta (ambos de alguna manera no), voy a ofrecer una solución front-end que utiliza clics de botón a otros si Están en la misma posición que yo. Esto funcionó para mí:Marcado HTML:
JavaScript:
Simplemente estoy usando un botón ASP.NET que utiliza la
OnClientClick
propiedad, que activa las funciones de secuencias de comandos del lado del cliente, que es JavaScript. Las cosas clave a tener en cuenta aquí son los usos de lareturn
palabra clave en la llamada a la función y en la función misma. He leído documentos que no se usanreturn
pero que aún funcionan con el clic del botón, de alguna manera no funcionó para mí. Lareturn false;
declaración en la función especifica que una devolución no debe suceder. También podría usar esa declaración en laOnClientClick
propiedad:OnClientClick="myFunction() return false;"
fuente
Usé ScriptManager en Code Behind y funcionó bien.
Si está utilizando UpdatePanel en ASP Frontend. Luego, ingrese el nombre del UpdatePanel y el 'nombre de la función' definidos con etiquetas de script.
fuente
Gracias "Liko", solo agrega un comentario a su respuesta.
Se agregaron comillas simples (
'
) a la variable; de lo contrario, se mostrará un mensaje de error:fuente
No puede llamar a una función Javascript desde CodeBehind, porque el archivo CodeBehind contiene el código que ejecuta el lado del servidor en el servidor web. El código Javascript se ejecuta en el navegador web en el lado del cliente.
fuente
Puede exponer los métodos de C # en las páginas de código subyacente para que se puedan llamar a través de JavaScript utilizando el atributo ScriptMethod .
No puede llamar a JavaScript desde CodeBehind: ese código existe únicamente en el cliente.
fuente