Como chamar uma function c # de JavaScript?

Eu quero chamar CsharpFunction , uma function c # no code-behind, de JavaScript. Eu tentei o código abaixo, mas se a condição JavaScript é True ou False , CsharpFunction foi chamado de qualquer maneira!

Código JavaScript:

 if (Javascriptcondition > 0) {  } 

Código c # por trás:

 protected void CsharpFunction() { // Notification.show(); } 

Como faço para chamar uma function c # de JavaScript?

Você pode usar um método da Web e Ajax:

  [WebMethod] //Default.aspx.cs public static void DeleteItem() { //Your Logic } 
 .CS File namespace Csharp { public void CsharpFunction() { //Code; } } JS code: function JSFunction() { <%#ProjectName.Csharp.CsharpFunction()%> ; } 

Nota: na function JS quando chamar sua function de página CS …. primeiro nome do projeto, em seguida, o nome do espaço de nome da página CS, em seguida, o nome da function

As funções do lado do servidor estão no lado do servidor, as funções do lado do cliente residem no cliente. O que você pode fazer é definir a variável de formulário oculta e enviar o formulário. Em seguida, na página use o manipulador Page_Load você pode acessar o valor da variável e chamar o método do servidor.

Mais informações podem ser encontradas aqui e aqui

Uma abordagem moderna é usar o ASP.NET Web API 2 (lado do servidor) com o jQuery Ajax (lado do cliente).

Como os methods de página e os methods da Web ASMX, a API da Web permite que você escreva código C # no ASP.NET, que pode ser chamado de um navegador ou de qualquer lugar, realmente!

Aqui está um exemplo de controlador da API da Web, que expõe os methods da API, permitindo que os clientes recuperem detalhes sobre 1 ou todos os produtos (no mundo real, os produtos provavelmente seriam carregados de um database):

 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 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); } } 

O controlador usa essa class de modelo de exemplo:

 public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public decimal Price { get; set; } } 

Exemplo de chamada do jQuery Ajax para obter e iterar sobre uma lista de produtos:

 $(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. $('
  • ', { text: formatItem(item) }).appendTo($('#products')); }); }); });
  • Isso não apenas permite que você crie facilmente uma API da Web moderna, mas também se você precisar se tornar realmente profissional e documentá-la também, usando as Páginas de Ajuda da API da Web do ASP.NET e / ou Swashbuckle .

    API da Web pode ser retro-montado (adicionado) a um projeto ASP.NET Web Forms existente. Nesse caso, você precisará adicionar instruções de roteamento ao método Application_Start no arquivo Global.asax :

     RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); 

    Documentação

    • Tutorial: Introdução à API da Web do ASP.NET 2 (C #)
    • Tutorial para pessoas com sites herdados: usando a API da Web com formulários da Web ASP.NET
    • MSDN: API da Web do ASP.NET 2

    Se você está querendo fazer uma chamada de servidor do cliente, você deve usar o Ajax – veja algo como Jquery e use $ .Ajax () ou $ .getJson () para chamar a function de servidor, dependendo do tipo de retorno que você está atrás ou ação que você quer executar.

    Use o Blazor http://learn-blazor.com/architecture/interop/

    Aqui está o c #:

     namespace BlazorDemo.Client { public static class MyCSharpFunctions { public static void CsharpFunction() { // Notification.show(); } } } 

    Então o Javascript:

     const CsharpFunction = Blazor.platform.findMethod( "BlazorDemo.Client", "BlazorDemo.Client", "MyCSharpFunctions", "CsharpFunction" ); if (Javascriptcondition > 0) { Blazor.platform.callMethod(CsharpFunction, null) } 

    Você não pode. Javascript é executado no lado do cliente, C # é executado no lado do servidor.

    Na verdade, seu servidor executará todo o código C #, gerando Javascript. O Javascript então é executado no navegador. Como dito nos comentários, o compilador não conhece Javascript.

    Para chamar a funcionalidade em seu servidor, você terá que usar técnicas como AJAX, como dito nas outras respostas.