2017-03-22 51 views
4

我正在使用asp.net和c#開發我的第一個網站。 如何從asp.net中的js函數調用c#函數?我想插入表單數據到sql數據庫。如何從asp.net中的js函數調用c#函數?

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

    } 
} 

在aspx文件JS(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 
      } 
     }); 
     } 

形式在aspx文件(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> 

我沒有訪問表單的提交按鈕(因爲我使用引導模板)。

感謝

解決方案: 我通過解決問題的C#功能 前還放[的WebMethod],我是在插入語句錯誤的語法。 感謝@Pawan和所有人的幫助。

+0

刪除''從url' – Pawan

+0

我嘗試過,但.cs'擴展它不起作用 – alaa

+1

你可以用你的方法[WebMethod]屬性從客戶端訪問方 –

回答

1

c#方法應該是一個web方法。

[WebMethod] 

在這裏不用你的C#方法

您需要導入system.web.services到你的代碼第一,

using System.Web.Services; 

,寫js功能到表單提交事件(如果你不能訪問提交按鈕)

onsubmit="yourfun()"內聯格式

,或者如果你正在使用jQuery

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

    your function; 

}); 
+0

我已經寫過

alaa

+0

你可以在你的C#代碼中加入一個調試器,並檢查它是否碰到後端..? –