wake-up-neo.com

Wie rufe ich eine C # -Funktion aus JavaScript auf?

Ich möchte CsharpFunction, eine C # -Funktion in CodeBehind, von JavaScript aus aufrufen. Ich habe den folgenden Code ausprobiert, aber unabhängig davon, ob die JavaScript-Bedingung True oder False ist, wurde CsharpFunction aufgerufen!

JavaScript-Code:

if (Javascriptcondition > 0) {
   <%CsharpFunction();%>
}

C # -Code hinter:

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

Wie rufe ich eine C # -Funktion von JavaScript aus auf?

25
IamNumber5

Sie können eine Webmethode und Ajax verwenden:

<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
}
31
user3098137
.CS File    
    namespace Csharp
    {
      public void CsharpFunction()
      {
        //Code;
      }
    }

    JS code:
    function JSFunction() {
            <%#ProjectName.Csharp.CsharpFunction()%> ;
    }

Hinweis: in JS-Funktion beim Aufruf der CS-Seitenfunktion .... Projektname, dann Name des Namensraums der CS-Seite, dann Funktionsname 

4
Vijay Mungara

Ein moderner Ansatz besteht darin, ASP.NET Web API 2 zu verwenden (serverseitig) mit jQuery Ajax (clientseitig).

Ähnlich wie Seitenmethoden und ASMX-Webmethoden können Sie mit der Web-API C # -Code in ASP.NET schreiben, der von einem Browser oder von einem beliebigen Ort aus aufgerufen werden kann.

Hier ist ein Beispiel für einen Web-API-Controller, der API-Methoden bereitstellt, mit denen Clients Details zu einem oder allen Produkten abrufen können (in der Realität werden Produkte wahrscheinlich aus einer Datenbank geladen):

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

Der Controller verwendet diese Beispielmodellklasse:

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

Beispiel für einen jQuery Ajax-Aufruf zum Abrufen und Durchlaufen einer Produktliste:

$(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'));
            });
        });
});

Auf diese Weise können Sie nicht nur auf einfache Weise eine moderne Web-API erstellen , sondern auch, wenn Sie wirklich professionell werden und diese auch dokumentieren möchten, ASP.NET Web API Help Pages und/oder Swashbuckle .

Die Web-API kann einem vorhandenen ASP.NET Web Forms-Projekt nachgerüstet (hinzugefügt) werden. In diesem Fall müssen Sie der Methode Application_Start In der Datei Global.asax Routing-Anweisungen hinzufügen:

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

Dokumentation

3
Stephen Kennedy

Server-seitige Funktionen befinden sich auf der Serverseite, clientseitige Funktionen befinden sich auf dem Client ..__ Sie können eine verborgene Formularvariable setzen und das Formular absenden, dann können Sie auf Seite Page_Load-Handler auf value zugreifen von Variable und rufen Sie die Servermethode auf.

Weitere Informationen finden Sie hier Und hier

1
Rohit

Wenn Sie einen Serveranruf vom Client aus tätigen möchten, sollten Sie Ajax verwenden. Schauen Sie sich beispielsweise Jquery an und verwenden Sie $ .Ajax () oder $ .getJson (), um die Serverfunktion aufzurufen, je nachdem, welche Art von Rückgabe Sie verwenden sind nach oder Aktion, die Sie ausführen möchten. 

0
Russell Young

Verwenden Sie Blazor http://learn-blazor.com/architecture/interop/

Hier ist das C #:

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

Dann das Javascript:

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