llamar - manual de javascript completo pdf
¿Cómo llamar a una función C#desde JavaScript? (7)
Quiero llamar a CsharpFunction
, una función C # en código subyacente, desde JavaScript. CsharpFunction
el código a continuación, pero si la condición de JavaScript es True
o False
, se llamó CsharpFunction
independientemente!
Código de JavaScript:
if (Javascriptcondition > 0) {
<%CsharpFunction();%>
}
C # código detrás:
protected void CsharpFunction()
{
// Notification.show();
}
¿Cómo llamo a una función C # desde JavaScript?
Las funciones del lado del servidor están en el lado del servidor, las funciones del lado del cliente residen en el cliente. Lo que puede hacer es establecer una variable de formulario oculta y enviar el formulario, luego en la página use el controlador Page_Load
puede acceder al valor de la variable y llamar al método del servidor.
No puedes. Javascript se ejecuta en el lado del cliente, C # se ejecuta en el lado del servidor.
De hecho, su servidor ejecutará todo el código C #, generando Javascript. El Javascript entonces, se ejecuta en el navegador. Como se dijo en los comentarios, el compilador no sabe Javascript.
Para llamar a la funcionalidad en su servidor, tendrá que usar técnicas como AJAX, como se dice en las otras respuestas.
Puedes usar un Método web y Ajax:
<script type="text/javascript"> //Default.aspx
function DeleteKartItems() {
$.ajax({
type: "POST",
url: ''Default.aspx/DeleteItem'',
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#divResult").html("success");
},
error: function (e) {
$("#divResult").html("Something Wrong.");
}
});
}
</script>
[WebMethod] //Default.aspx.cs
public static void DeleteItem()
{
//Your Logic
}
Si desea hacer una llamada al servidor desde el cliente, debe usar Ajax: busque algo como Jquery y use $ .Ajax () o $ .getJson () para llamar a la función del servidor, dependiendo de qué tipo de devolución es posterior o acción que desea ejecutar.
Un enfoque moderno es usar ASP.NET Web API 2 (en el lado del servidor) con jQuery Ajax (del lado del cliente).
Al igual que los métodos de página y los métodos web ASMX, la API web le permite escribir código C # en ASP.NET que puede ser llamado desde un navegador o desde cualquier lugar, ¡de verdad!
Aquí hay un ejemplo de controlador de API web, que expone métodos API que permiten a los clientes recuperar detalles sobre 1 o todos los productos (en el mundo real, los productos probablemente se cargarían desde una base de datos):
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
[Route("api/products")]
[HttpGet]
public IEnumerable<Product> GetAllProducts()
{
return products;
}
[Route("api/product/{id}")]
[HttpGet]
public IHttpActionResult GetProduct(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
El controlador usa este ejemplo de clase de modelo:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
}
Ejemplo jQuery Ajax llamada para obtener e iterar sobre una lista de productos:
$(document).ready(function () {
// Send an AJAX request
$.getJSON("/api/products")
.done(function (data) {
// On success, ''data'' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$(''<li>'', { text: formatItem(item) }).appendTo($(''#products''));
});
});
});
Esto no solo le permite crear fácilmente una API Web moderna, puede hacerlo si necesita ser realmente profesional y documentarlo también, utilizando las páginas de ayuda de ASP.NET Web API y / o Swashbuckle .
La API web se puede adaptar (agregar) a un proyecto de Formularios web de ASP.NET existente. En ese caso, deberá agregar instrucciones de enrutamiento en el método Application_Start
en el archivo Global.asax
:
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
Documentación
- Tutorial: Introducción a ASP.NET Web API 2 (C #)
- Tutorial para aquellos con sitios heredados: Uso de API web con formularios web ASP.NET
- MSDN: ASP.NET Web API 2
Utilice Blazor http://learn-blazor.com/architecture/interop/
Aquí está el C #:
namespace BlazorDemo.Client
{
public static class MyCSharpFunctions
{
public static void CsharpFunction()
{
// Notification.show();
}
}
}
Entonces el Javascript:
const CsharpFunction = Blazor.platform.findMethod(
"BlazorDemo.Client",
"BlazorDemo.Client",
"MyCSharpFunctions",
"CsharpFunction"
);
if (Javascriptcondition > 0) {
Blazor.platform.callMethod(CsharpFunction, null)
}
.CS File
namespace Csharp
{
public void CsharpFunction()
{
//Code;
}
}
JS code:
function JSFunction() {
<%#ProjectName.Csharp.CsharpFunction()%> ;
}
Nota: en JS Function cuando llame a la función de su página CS ... primer nombre del proyecto, luego nombre del espacio de nombre de la página CS y luego nombre de la función