2017-03-22 6 views
4

Ich entwickle meine erste Website in vs mit asp.net und C#. Wie kann ich C# Funktion von js Funktion innerhalb von asp.net aufrufen? Ich möchte Formulardaten in die SQL-Datenbank einfügen.Wie C# Funktion von js Funktion innerhalb von asp.net aufrufen?

C# (add_project.aspx.cs):

using System.Web.Services; 
public partial class add_project : System.Web.UI.Page 
{ 
[WebMethod]  
public static void InsertIntoDatabase(string projectname, string piname) 
    { 
     Console.WriteLine("hello");// this doesn't appear which mean it doesn't enter this function 
     SqlConnection conn = new SqlConnection("Data Source=servername;Initial Catalog=databasename;Integrated Security=SSPI"); 
     string sql = "INSERT INTO Projects (project_name, principal_investigator) VALUES (@project_name,@pi_name)"; 

     try 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand(sql, conn); 
      SqlParameter[] param = new SqlParameter[2]; 
      param[0] = new SqlParameter("@project_name", System.Data.SqlDbType.VarChar, 50); 
      param[1] = new SqlParameter("@principal_investigator", System.Data.SqlDbType.VarChar, 50); 
     param[0].Value = projectname; 
      param[1].Value = piname; 
      for (int i = 0; i < param.Length; i++) 
      { 
       cmd.Parameters.Add(param[i]); 
      } 

      cmd.ExecuteNonQuery(); 
     } 
     catch (System.Data.SqlClient.SqlException ex) 
     { 
      string msg = "Insert Error:"; 
      msg += ex.Message; 
      throw new Exception(msg); 
     } 
     finally 
     { 
      conn.Close(); 
     } 

    } 
} 

js in der aspx Datei (add_project.aspx):

<script> 
    function doSomething() { 

     var $projectname = $("#project_name").val(); 
     var $piname = $("#pi_name").val(); 
     alert($piname); // This alert appear 
     $.ajax({ 
      type: "POST", 
      url: 'add_project.aspx/InsertIntoDatabase', 
      data: "{'projectname':'" + $projectname + "', 'piname':'" + $piname + "' }", //Pass the parameter names and values 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       alert('success'); 
      }, 
      error: function (e) { 
       alert('error');  // this msg appear 
      } 
     }); 
     } 

Form in der aspx-Datei (add_project.aspx):

<form class="form-horizontal form-label-left" id="add_project_form" runat="server" onsubmit="doSomething();"> 
    <div id="wizard" class="form_wizard wizard_horizontal"> 
<!-- Project Name --> 
          <div class="form-group"> 
          <label class="control-label col-md-3 col-sm-3 col-xs-12" for="project_name">Project Name <span class="required">*</span> 
          </label> 
          <div class="col-md-6 col-sm-6 col-xs-12"> 
           <asp:TextBox id="project_name" required="required" class="form-control col-md-7 col-xs-12" runat="server"></asp:TextBox> 
          </div> 
          </div> 
<!-- PI name --> 
          <div class="form-group"> 
          <label class="control-label col-md-3 col-sm-3 col-xs-12" for="pi_name">PI Name <span class="required">*</span> 
          </label> 
          <div class="col-md-6 col-sm-6 col-xs-12"> 
           <asp:TextBox id="pi_name" required="required" class="form-control col-md-7 col-xs-12" runat="server"></asp:TextBox> 
          </div> 
          </div> 
    </div> 
</form> 

Ich habe keinen Zugriff auf die Schaltfläche zum Absenden des Formulars (weil ich Bootstrap-Vorlage verwenden).

Dank

Lösung: ich das Problem lösen, indem put [WebMethod] vor der C# Funktion Auch ich war haben Fehler Syntax in der Insert-Anweisung. Danke @Pawan und alle für die Hilfe.

+0

entfernen '.cs' Erweiterung von' url' – Pawan

+0

habe ich versucht, es aber nicht – alaa

+1

Sie funktioniert es für den Zugriff vom Client Seite –

Antwort

1

Die C# -Methode sollte eine Webmethode sein.

[WebMethod] 

hier geht Ihre C# Methode

Sie benötigen, senden Ereignis

using System.Web.Services; 

und schreiben die js Funktion in das Formular zuerst system.web.services in Ihren Code zu importieren (wenn Sie kippe Zugang Absenden-Button)

schreiben onsubmit="yourfun()" inline in der Form

0 Verwenden Sie [WebMethod] -Attribut auf Ihre Methode

oder wenn Sie jquery verwenden

$("#form-id").submit(function(){ 

    your function; 

}); 
+0

Ich schrieb bereits

alaa

+0

Kannst du einen Debugger in deinen C# Code einfügen und überprüfen, ob er das Backend erreicht ..? –

Verwandte Themen